2023的日常
Web安全。
DRF学习。
C++思路:模拟。先加上月份,再加上日,在判断是否闰年,是否要加上年。或者直接用昨天的函数判断输入日期和输入日期对应年的1月1日比差值。
时间:
空间:,C=12
休憩。
// 计算当前到0001-01-01经过的时间 |
时间:
空间:,C=7
Web安全。
PS使用。
休憩。
Web安全。
网站开发。
网站开发。
C++思路:数学。观察可知,番茄数量小于奶酪数X2或大于奶酪数X4,直接返回空。当番茄数量为奇数,直接返回空。否则就可以算出巨无霸的数量是leave = (tomatoSlices - cheeseSlices * 2) / 2;
,小皇堡是cheeseSlices - leave
。返回两者数量。
时间:
空间:
休憩。
C++思路:模拟。假设右上角坐标是(n,n)
,算出公式:Sn=2n(n+1)(2n+1)
。然后模拟判断Sn
什么时候大于neededApples
。最后返回8n
为周长。
时间:,m指neededApples。
空间:
网站开发。
网站开发。
休憩。
休憩。
python3思路:模拟,return "".join([c[0] for c in words]) == s
DRF学习。
C++思路:二分查找。因为相邻数不想等且边界是无穷小,所以可以直接二分,以中点为判断条件,当中点右边的数小于中点时,表示峰值在左,移动rp,否则峰值在右,移动lp。最后返回rp即可。
时间:
空间:
DRF学习。
C++思路:动态规划,类似爬楼梯。先给cost尾部加上一个0表示终点,同时设置一个step容器,记录前两步和前一步的最小花费。然后遍历cost,当前的最小花费就是前面两个取小并加上当前格子的花费。将然后将step[0]
替换成step[1]
表示前一步的最小花费,而step[1]
替换成刚刚取小的那个花费。遍历结束返回step[1]
即可。
时间:
空间:
Web安全。
网站搭建。
Web安全。
网站搭建。
Web安全。
网站搭建。
Web安全。
网站搭建。
整理文档
python3思路:动态规划。
休憩
C++思路:打表 + 二分查找。先写个表,记录所有的数值平衡数,根据数据范围记录到1224444即可。然后对其二分查找,找到第一个严格大于n的数。表的制作就是直接遍历数值范围+100000的数,每次记录每个数的每一位数,然后判断,当满足条件时,将数加入到表中。
时间:
空间:
半开放连接扫描器开发。
半开放连接扫描器开发。
半开放连接扫描器开发。
Web安全。
网站搭建。
C++思路:计数。先计数,用int容器。然后做for循环,当某个字符只出现在word1或者word2中,返回false,因为无论怎么换都不能换得相同。结束后对int容器排序,返回count1 == count2
时间:
空间:
Web安全。
网站搭建。
C++思路:有序集合。设立两个变量,一个有序集合,一个整型为1。push方法是判断输入的数字是否小于整型,小于表示没有,插入到有序集合中,否则不插入。pop方法先判断集合是否是空,空则返回整型并让整型加一。否则返回集合中的第一个元素。
时间:操作需要,n是有序集合s的元素个数。
空间:
Web安全。
网站搭建。
网站搭建。
Web安全。
C++:DFS,每次记录数字出现个数。当该节点左右节点都空时,判断记录的数组出现次数奇数和偶数的个数,如果出现数字的次数存在2个以上的奇数,那就无法构成回文串,否测可以。
时间:
空间:
网站搭建。
Web安全。
网站搭建。
python3思路:双指针。先做一个字典,然后循环,lp小于text长度,当当前字符不是&
,存入结果,lp加一。否则进入内循环,rp小于text长度。当rp指向的字符是;
且rp和lp距离小于等于6时(最长实体字符长度),判断字符是否在字典中,在就替换并lp加一,不在就不替换并lp加一。否则当rp和lp距离大于6时,存入lp字符并lp加一,否则rp加一。最后返回字符串。
时间:,k为实体字符长度和,32。
空间:
Web安全。
网站搭建。
网站搭建。
Web安全。
C++思路:贪心。思路上是将两两分组。组内元素不能相同,组间元素可以相同。一个for循环,i < len - 1
。当nums[i] == nums[i + 1]
时,去掉组内前一个元素,res++
,下次依靠for循环自己的i++
将形成一个新组。否则跳过组,i++
。最后还要判断数组长是否为偶数,不是再减去1,去掉最后一个元素。
时间:
空间:
网站搭建。
Web安全。
网站搭建。
Web安全。
C++:哈希表。键是数位和,值是一个容器,记录最大的两个数。先一个for循环,计算下标和,然后加到哈希表中。若对应的键中没值直接加,若键中存在一个值,加完后判断谁的值更大,将更大的放到前面。若键中存在两个值,先和第一个比较,如果大于第一个,将第二数替换成该数,然后交换两个数,保证大数在前。如果大于第二个,直接和第二个换。最后遍历哈希表,返回最大的和。
时间:
空间:
网站搭建。
Untiy学习。
网站搭建。
Untiy学习。
C++思路:指针遍历。一个while,按题意,当满足数字是偶数且小于threshold时进入内循环,否则p++
。内循环中,先设置temp=1
,然后一个while,两个if,第一个是当数字是奇数时,temp和p都加一,否则p加一后跳出内循环。第二个是数字是偶数。结束后res=max(res, temp);
。最后返回res。
时间:
空间:
网站搭建。
Web安全。
Vue学习。
渗透测试学习。
Redis学习。
Cocos学习。
C++思路:贪心。官解是并查集。先做一个无序哈希表,然后for遍历,键是编号,值是数组索引。然后一个for遍历,当相邻位置是另一半时,直接跳出此次循环,i += 2
,否则将row[i+1]
的位置和自己的真正的另一半进行交换,通过更新哈希表中的座位号,交换次数加一。返回交换次数。
时间:
空间:
Vue学习。
Cocos学习。
Vue学习。
Cocos学习。
Vue学习。
算法学习。
Vue学习。
python3:暴力。先set去重然后按题意两个for依次判断。
Django学习。
Bootstrap学习。
Vue学习。
C++思路:BFS,队列辅助。每次出队后判断该节点是否是该层的尾节点,如果不是则将该节点的next指向队头结点,如果是则将该节点的next指向NULL。
时间:
空间:
新增:Bootstrap。
vue学习。
vue学习。
vue学习。
vue学习。
Django学习。
vue学习。
Django学习。
vue学习。
Django学习。
Django学习。
Django学习。
Django学习。
Django学习。
算法题练习。
Django学习。
C++思路:贪心算法。排序,然后找到0的位置。然后记录两个数,一个是从0开始后面的累加和,一个是从0开始后面的累加和,但是包含等级。此时res等于带等级的累加和。然后做一个for循环,从0的前一个数开始向前加。同样是记录两个数,一个是从此开始向前的累加和,一个是带等级的,等级从1开始。每次判断,当正累计和加上负累计和小于res,返回上一个res即可。
时间:
空间:
算法题练习。
C++思路:并查集。官解。
算法题练习。
cocos学习。
算法题练习。
C++游戏练习。
python工具编写。
C++:哈希表。由题nums由不同正整数组成,所以数字两两的乘积若相等,则数一定不相等,满足题意。所以只需把两两乘积加入到字典中,乘积值为键,乘积的个数为值。最后再写一个for,提出哈希表的累加到结果中,根据排列组合,res += val * (val - 1) * 4;
最后返回res。
时间:
空间:
计算机网络:整理。
C++:整理。
算法题练习。
算法题练习。
C++游戏练习。
C++思路:数学。求出n之前的3,5,7分别的倍数之和,然后减去两两搭配的值,最后加上3 * 5 * 7
的和的值,就是最后的值。求和可以用等差数列来求。(可以画韦恩图理解思路)
时间:
控件:
新增C++游戏。
算法题练习。
C++思路:位运算。先全异或,得到的结果是两个只出现一次的元素的异或结果。然后从右向左找到第一个1,表明这是两个数首个不同的地方,记为div。然后再做一个for循环,让结果和div做与运算。为0的分成一组,结果与nums[i]异或。不为0的分为另一组,结果与nums[i]异或。这样两个数就被区分开来,剩下的数也被异或成了0。返回这两个数。
时间:
空间:
算法题练习。
C++思路:位运算模3。一个for循环,循环32次。在循环中对nums做一个for循环,每次拿出nums的同一位数累加,然后将结果取模3后移回原始位数。返回结果。
时间:
空间:
算法题练习。
C++思路:异或。设置一个res为0。然后让每一个nums值和res做异或,因为两个相同的数异或为0,所以那个只出现一次的数和res异或后就是那个数。返回res。
时间:
空间:
算法题练习。
复习。
计算机网络复习。
休息。
python3思路:字典+贪心。先把数字出现的次数放入字典中。然后确定num1和num2的位数。比如num是6位那么num1和num2都是3位。然后while循环,从字典的小键加到大键。
时间:
空间:
休息。
休息。
python3思路:单调栈。初始化函数中设定一个栈。在next函数中先设置res=1。然后一个while循环,当栈不空且栈顶值小于等于price时,栈顶出栈,res加上栈顶的第二个元素值。循环结束后将当前的price值和res值构成一个列表存入栈中,返回res。
时间:
空间:
cocos学习。
星火编辑器。
cocos学习。
python3思路:贪心算法,最低值买入最高值卖出即可。设置最低最高值都为第一个值。然后for循环,当价格小于最高值时,结果加上最高值减去最低值,更新最低最高值为当前值,否则更新最高值为当前值即可。最后返回res + maxs - mins
。
时间:
空间:
cocos学习。
python3:遍历。先找到第一个值作为最小值,然后for循环。当价格小于最小值,mins = min(mins,prices[i])
。否则res = max(res,prices[i] - mins)
。返回res。
时间:
空间:
星火编辑器。
JavaScript学习。
cocos学习。
星火编辑器。
python3思路:参考官解二分查找。先把flowers中每个列表的第一个数提出来并升序排序,构成starts列表,然后把第二数拿出来升序排序,构成ends列表。然后遍历people,每次进行二分查找,从右边找starts中的值作为起始值,从左边找ends中的值作为结束值,然后用起始值减结束值。这样就表明了有多少个值实在范围内。
星火编辑器。
星火编辑器。
class Solution: |
时间:
空间:
星火编辑器。
星火编辑器。
python3思路:双向链表+字典。字典的键是键,值是链表节点。链表首部表示最近最少被使用,尾部表示最近最多被使用。每次存数据,若数据在字典中,更新值并把节点放入尾部。若数据不在,判断容量,若容量满了,删除首部节点并插入新节点到尾部。没满则直接插入到尾部。取数则先判断存在,存在则取节点后还要把节点放入尾部。
时间:
星火编辑器体验。
笔记整理。
C++思路:先判断孩子数是否小于钱,小于返回-1。然后设置一个temp为children * 8 - temp,表明分钱后剩余的钱,如果temp为4,孩子数要减2,表明有一个分了8的孩子要分9才能保证钱数没有4。如果temp小于0,孩子数减1,表明有一个孩子要承担剩下的所有的钱。最后返回(temp - children) / 7
,表明每个孩子分1块钱后还有多少的孩子能分到8块。返回值为结果。
时间:
空间:
文章整理:html+css,JavaScript,C++。
安全靶场训练。
python3思路:动态规划 + DFS。
从根节点出发,有两种选择。一是偷根节点和不偷左右节点,一是不偷根节点和偷左右节点。设定一个dfs遍历全部节点,当root为None返回0,0。否则遍历左右节点,然后求出偷和不偷的值,返回这两个值。dfs结束后在两个值之间取一个最大值即可。
时间:
空间:
pikachu:命令执行。
DVWA:命令执行。
C++:STL学习
题目名称-SSRF Me
- 写一个PHP循环,解出captcha的值。
- 包含文件,URL为file:///flag。由于flag会被禁止,所以可以将其进行URL编码。最终结果为file:///%66%6C%61%67。
C++:vector,deque。
渗透题练习。
python3思路:动态规划。
- 子问题:第i个房子所偷的最大的钱。
- 确定dp:
dp[i] = max(dp[i-2] + dp[i],dp[i-1])
,偷i或者不偷i。 - 初始化:
dp[0] = nums[0],dp[1] = max(num[0],num[1])
- 遍历顺序:
for(int i=2;i<len(nums);i++)
时间:
空间:
安全靶场训练。
python3思路:模拟。设定八个方向,然后一个for,每次拿出一个方向,设置while循环,如果移动不越界的话,改变king的位置。当该位置有queen时,把结果加到res中,结束while循环。最后返回res即可。
时间:
空间:
这题不会
pikachu:URL跳转和信息泄露。
安全靶场训练。
python3思路:模拟。注意此题有坑。当grid[0][0]
不为0的时候,直接返回False即可,因为这不是一个满足条件的有效方案。然后设置八个方向存入元组中。一个while循环,条件是下一个目标点小于所有点数。然后一个for循环,从当前位置开始,当方向合法且存在点是下一个目标点时,目标点值加一,如果八个方向都不是,直接结束while循环。否则就更新下一目标点。最后判断下一目标点是否等于所有点数,等于返回True,否则返回False。
时间:
空间:
pikachu:SSRF漏洞。
Unity:状态机学习。
安全靶场训练。
python3思路:相加取模。
时间:
空间:
python思路:DFS+先序遍历。
序列化的时候,全局设置一个res,再设置一个dfs函数,每次先判断当前结点是否存在,存在则向res中先添加当前结点的值,然后若左子树存在,添加”L”字符,同理dfs左子树。右子树同理存在添加一个”R”字符然后遍历。最后无论结点是否存在,都添加一个”B”字符,然后返回。最后返回res作为序列化结果。
反序列化的时候,设置一个dfs函数,传递当前节点和idx=0值。然后每次获得data中的一个字符。设置一个temp。若是L则先判断temp中是否有值,有就添加为当前结点值,然后idx = dfs(node,idx + 1)
。R同理。若是B则先判断temp,再return idx + 1
。若都不是则temp.append(data[idx])
后再idx += 1
。
最后返回最初的根节点即可。
时间:
空间:
Web——Web_php_unserialize
(preg_match('/[oc]:\d+:/i', $var))
绕过:O:4:
改成O:+4:
__wakeup()
绕过:"Demo":1:
改成1以上的数字("Demo":2:
)。因为在 PHP5 < 5.6.25, PHP7 < 7.0.10 的版本存在wakeup的漏洞。当反序列化中object的个数和之前的个数不等时,wakeup就会被绕过。
# 注意:因为demofile属性是private属性,所以在序列化的时候会在名字中加入%00(空白符),所以base64编码可以使用如下方式进行,这样可以保证空白符的存在。 |
payload:?var=TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==
pikachu:反序列化。
DVWA:SQL注入。
安全靶场训练。
Unity:状态机学习。
C#思路:二分查找。设置上限和下限。每次判断中间的数值是否满足题意。若满足,调整上限为中间数值。不满足,调整下限为中间数值加一。直到下限大于等于上限跳出循环。返回下限,此时下限就是满足条件的最小时间。
时间:。L为上限。
空间:
pikachu:SQL注入。
安全靶场训练。
Unity:状态机学习。
C#:深度优先搜索。设置maxDpeth和res为类变量。定义public int dfs(int depth, TreeNode node)
,在LcaDeepestLeaves()
中线初始化maxDepth = -1和res。然后调用dfs,最后返回res作为结果即可。
在dfs中,先判断node是否为空,为空则更新maxDepth,并且返回当前depth,否则对当前node的左右节点做dfs,记录分别最大深度值。如果左最大深度等于右最大深度等于全局最大深度,更新res = node,最后返回左最大深度和右最大深度中较大的。
时间:
空间:
Web——easyphp
存入CTF例题中。
a:利用科学计数法,例如a=1e8。
b:直接写个for循环暴力搜索。最后找到b=53724。
c:首先c有m,n两个键,所以是索引数组m和n。因为m要非数字且大于2022,所以可以让m=2044a,字符串和数字组合,两个条件都满足。因为Count(n)为2,所以还要创建一个数组。n[0]存在,任意复制。后面看似”DGGJ”既要存于数组中又不要存于数组中,实则由于array_search查找是通过if进行比较。当一个字符串和一整数比较时会将字符串向整数转化。所以只需填入0两者便会相等。
最后Payload:http://61.147.171.105:55516?a=1e8&b=53724&c={"m":"2044a","n":[["1"],0]}
pikachu:目录遍历。
python爬虫:结构更新。
CTF例题:easyphp。
安全靶场训练。
Unity:2D游戏学习。
C#思路:哈希表。先遍历num1和num2,记录下数字是否出现到各自的新数组中,数组长度为10。然后再进行依次遍历,i = 10,先判断num1和num2是否都出现了同一个数字,出现了则直接返回该数字。否则分别记录下num1和num2的最小值,返回他们组合后的最小值。
时间:,C = 10
空间:
pikachu:越权访问。
休息。
python3思路:遍历。设置当前值now和索引idx。一个for。当forts[i]的值为1或-1时进行判断。如果值等于-now,就res = max(i - idx - 1,res)
并且更新now值,否则只需更新now值。返回res。
时间:
空间:
编写密码器。
python3思路:直接遍历。找到cost中的大值和小值。设置一个while循环,当大值所选花销小于等于total时循环,每次累加的结果值为剩余的钱整除小值后的钱再加1,然后大值所选个数加1。最后返回结果。
时间:
空间:
编写密码器。
同理昨天
编写密码器。
休息。
python3思路:遍历。先判断nums长度0和1的情况,然后for循环。记下首尾两个数。每次判断nums当前数字是否等于应该出现的尾数。不等于则根据首尾数差判断加入到Output中的样式。等于则尾数+1。结束后再判断一次首尾数字。返回结果。
时间:
空间:
休息。
休息。
python3思路:直接遍历。先两个for遍历出每行每列有多少台服务器,存入字典中。然后再两个for遍历,当某个位置存在服务器且该行或该列的服务器数量大于1时,总数加一。返回总数。
时间:
空间:
休息。
python3思路:双指针。分三段,先一个for找到第一个人的位置,此时最大距离是最左边到第一个人的位置,然后左指针指向他。之后再一个for,找到人后先右指针指向他,最大距离就是左右指针距离差的一半再向下取整。然后左指针指向右指针。结束后,再判断一下最后一个座位是否为空。是的话此时最大距离是最后一个位置到左指针的距离。最后返回其中的最大的一个距离。
时间:
空间:
休息。
python3思路:双指针。先用replace将”_”替换成””判断两个字符串是否相等,如果不相等直接返回False。然后在设置lp指向start头,rp指向target头。当lp未越界时,判断lp和rp指向L时是否lp<=rp,指向R时是否lp>=rp,全满足就返回True,有一个不满足就返回False。
玩了一天。
直接相加。
玩了一天。
Unity:2D游戏学习。
python3思路:哈希表。建立字典,找到indices的值作为键,索引作为值。然后给键从小到大排序、之后对其进行一个for循环。设立一个当前位置nxt和一个res列表。每次先把从nxt到当前索引的位置的字符加入到res中。然后判断是否需要替换,加入对应的字符串并更新nxt的位置。最后将res拼接成字符串输出。
时间:
空间:
Unity:寻路系统。
C#思路:参考评论区。递归。如果root1为空返回root2,如果root2为空返回root1。否则返回一个新节点,节点值为两者之和,左节点为MergeTrees两者的左节点,右节点同理。
时间:
空间:
Unity:寻路系统。
C#思路:参考评论区。反向双指针。设三个指针p1,p2分别指向num1的m-1,nums2的n-1,p指向m+n-1。因为数组有序。所以一个while循环,每次比较p1,和p2的元素大小,将较大的放入p的位置。然后将p1或p2(较大的)减一,p减一。结束条件是p2 < 0。因为数组有序,所以p2 < 0即可,剩下的p1的元素也是有序的。
时间:
空间:
Unity:寻路系统。
更改关于中的文章的时间顺序。
python3思路:先一个for,找到链表中的val值作为键,在lists中的index值作为值存入字典。字典值是一个列表。之后给字典的键进行从小到大排序。设置好头结点。然后再两个for,每次找到最小键的最小值,该索引对应的链表值就是需要的值。依次往头结点上进行拼接。最后返回头结点。
时间:,n为链表节点数总数。
空间:
日志:每日日志由2023-5 / 6 / 7 / 8四个网页合成成一个。同时修改日志的时间顺序为降序。
Unity:2D小游戏学习。
Unity:2D小游戏学习。
Unity:2D小游戏学习。
python3思路:模拟。
Unity:2D小游戏学习。
Unity:2D小游戏学习。
Unity:2D小游戏学习。
算法题。
Unity:2D小游戏学习。
Unity:2D小游戏学习。
python3思路:哈希表。先把jewels出现的字母存入字典,然后判断stones的字母是否在字典中。
Unity:2D小游戏学习。
python3思路:拿一个字典存5元和10元的数量。然后一个for判断,10元会减去1张5元的,20元可以选择减去1张10元1张5元,或者减去3张5元的。不满足条件就返回False,循环完成返回True。
时间:
空间:
算法题。
python3思路:哈希表模拟,同官解。
英:词听。
算法题。
Unity:持久化存储。
python3思路:双指针。从尾部开始加,设置进位位。先是while lp >= 0 and rp >= 0
,然后再while lp >= 0
和while rp >= 0
,依次加上值和进位位。最后若进位位等于1,还要在加上一次进位位。
时间:
空间:
Unity:三维数学。
c++思路:评论区看到的贪心。首先取第一个值,然后一个for,取res += max(nums[i] - nums[i-1],0);
。这样可以保证是最大的偶数值减去最小的奇数值。
算法题。
Unity:三维数学。
C++思路:双指针。因为必有解且数组有序,不用额外空间。所以先创建结果数组,把左右指针存入数组中。然后一个while,当指向的值不等于结果时,进入while再判断,当它们的和大于结果,说明结果大了,移动右指针,否则移动左指针。跳出循环后表明找到结果。因为是索引1开始,所以指针结果加一后返回。
时间:
空间:
Unity脚本:三维数学和UI界面。
算法题。
绘画。
C++思路:先判断奇偶,然后一个for,第一次结果中加上2,第二次加上4,依次类推,直到剩余的数小于此次要加的数,然后把余数加到最后一个数上。这样数组是最长的。
英语词。
算法题。
英语词。
算法题,算法赛。
python3思路:先创建一个头结点和一个进位位。然后循环,每次判断l1和l2是否有一个非空,存在则加上非空的那个值和进位位。加完后判断是否有进位,有的话进位位设为1,没有设为0。循环结束再判断一次进位位。最后返回头结点的下一个节点。
时间:
空间:
英语词。
python3思路:先判断字符串首尾字符是否相等,然后一个for遍历,遍历到空格判断空格前后字符是否相等。
英语词听读。
算法题,Web题。
MMD学习。
网站:更新分类样式,卸载了首页的分类栏。
python3思路:先算出lsum和rsum,然后一个for,每次让lsum+=i
,rsum-=(i-1)
,判断两者是否相等。
时间:
空间:
更节约时间的可以通过等差数列求和,判断
Web——babyweb
查看了提示。
投机:/ssrf.php?urlfile:///flag
英语词听读。
算法题,Web题。
逆向:逻辑运算。
MMD学习。
python3思路:评论区。先找到矩形上离圆心最近的点,然后判断
代码:dx,dy = max(0,x1-xCenter,xCenter-x2),max(0,y1-yCenter,yCenter-y2)
时空复杂度:
Web——fakebook
查看了提示。
关键点:
- 御剑扫描后台,发现flag.php但访问没有反应。
- 注册,blog不合法。robots.txt发现bak文件,查看源码,完成blog的注册。
- 注册成功后进入view.php?no=1,整形联合报错注入,union和select之间要空格绕过。
- 发现反序列化函数,构造payload
view.php?no=1 and 1=2 union/**/select 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:1:"1";s:3:"age";i:1;s:4:"blog";s:29:"file:///var/www/html/flag.php";}' --+
- 在工作台发现结果,base64解码。
反汇编代码分析:逻辑运算。
英语单词。
逆向:浮点数操作。
渗透:msf复习。
MMD学习。
这题不会
英语单词。
算法题。
python3整活:return max([int(s) if s.isdigit() else len(s) for s in strs])
玩了一天。
思路:暴力BFS,没写出来。
英语单词。
Web开发:管理系统的后台功能页面完善。
阿巴阿巴
英语单词。
区块链书本复习。
Web开发:管理系统的后台功能页面完善。
阿巴阿巴
英语单词。
算法题。
网站代码块和链接问题修复。
区块链:私有链实现。(存在错误)
PHP:完善笔记。
开始想用dfs,会超内存。然后看了官解。
python3思路:先算reward1-reward2存入diff,然后排序,然后把reward2的值求和,最后做一个for到k,每次用结果加上diff[len - 1 - i]。这样等于是选了最优的reward1的值。
时间:
空间:
- 网站信息和每日活动移动至关于位置,不再在首页中显示。
- 网站代码块问题修复。修复方式:卸载全部文章再重新放入网站中。
- 修复了链接其他文章网址错误的问题。
PHP:动态交互和部分安全编程。
英语单词。
算法题。
修复网站代码块问题,但C#脚本文件存在代码块问题。
Web开发:管理系统的登录页面前端程序完善。
Unity:叉乘,欧拉角,四元数。
python3思路:模拟+字典。先在一个for里获得每行和每列的值,判断值在不在字典中,不在就存入,在就+1。字典的键是每一行或每一列做成的元组,值是一个列表,存[row,col](每行和每列出现该元组的次数)。最后再一个for每次从字典中取出一个值,如果都大于零就row * col加到count中,最后返回count。
时间:
空间:
设置了代码块自动换行。但是设置代码块自动换行后代码块前会自动多出两列,原因不明。修复方式:直接用css隐藏。
C#脚本代码块外框架,原因目前不明。
Unity脚本:三维数学。
英语单词。
算法题。
逆向:while/do-while,浮点数。
python3思路:双指针,对nums一个for获得rp,一个if,当rp+1<len且满足题意时执行题意。然后再一个if,如果rp指的值不是0,就和lp指的值进行交换,然后lp+=1,lp初始为0。lp主要用于记录上一个0的位置。代码基本同官解。
时间:
空间:
masm32:浮点数。
反汇编代码分析:while/do-while。
英语单词。
算法题。
完成了网站魔改的记录。
网站更新至V1.0,推送至github中。
V1.0修复的网站问题如下:
- 文章的链接和图片错误
- 配置了mathjax显示数学公式
- 修复了页脚时钟和回到顶端百分比的错误
V1.0新加的网站样式如下:
- 简介栏颜色
- 滚动条属性设置(火狐无效)
- 复制和使用F12提示
- 按键防抖
图片由API改为固定,图片来源如下:
英语单词。
算法题。
配置了网站相关属性。
进行了网站魔改的记录。
1156. 单字符重复子串的最大长度 - 力扣(LeetCode)
思路是双指针,但是没指出来,学习评论区。
python3思路:双指针。先统计每个字符出现的个数存在dic中。然后while遍历,找到两个相邻仅一个不同字符的相同字符子串,左右子串长度分别为l和r,求出res = max(res, min(l + r + 1, dic[c]))
为最大值,然后左指针指向第一个不同字符继续遍历。
今天新增的拓展如下:
- 图片配置。
- 滚动条属性设置。
- 使用控制台提示。
- 复制提示框。
- 按键防抖。
新增网站魔改记录。
英语单词。
力扣题。
逆向:for、i++和++i。
2559. 统计范围内的元音字符串数 - 力扣(LeetCode)
python3思路:直接两个for,超时。用前缀和,先for一次words,创建一个列表,每个元素存前idx个words满足条件的个数。然后再对queries做一个for,每次取出一个query。因为题目说包含l和r两个值,所以还要做个判断,如果query[0]是0直接返回在前缀和中找索引为query[1]的值,否则用前缀和中query[1]的值减去query[0]-1的值。返回结果列表。
时间:
空间:
n是words的长度,m是queries的长度。
反汇编代码分析:for、i++和++i。
英语单词。
区块链:哈希列表程序。
Web开发:管理系统的登录页面前端程序。
Web渗透:复习了一遍书。
不会。看答案大概懂了。
python3:二分。先排序,然后选中间值为甜蜜度。然后遍历数组,前一元素设为price[0],然后用后面的减前面的,如果大于等于甜蜜度,更新前一元素为当前元素,总数加一。遍历完成后如果选择元素个数大于等于k则满足条件,更新下界找更大甜蜜度,否则修改上界找更小甜蜜度,最后返回最大甜蜜度。
英语单词。
算法题。
逆向:switch-case分析。
Web渗透:简单复习。
Unity:点乘。
1130. 叶值的最小代价生成树 - 力扣(LeetCode)
python3思路:贪心算法。写一个while,每次找到乘积最小的两个数,将乘积加到结果中去,然后移除小的那个数,大的那个数留下来当做叶节点乘积。直到数组长度小于2结束。注:最后移除要写arr.pop(idx)
不能写arr.remove(arr[idx])
,因为这样有重复数字的话它会找到第一个满足条件的数,这个数可能不是需要移除的数。
时间:
反汇编代码分析:switch-case。
Unity:三维数学的Mathf。
英语单词。
算法题。
随便写了个获取图片链接图片程序。
逆向:if-else分析。
Unity:角度弧度。
写不出,学习了灵茶山艾府的答案。
python3思路:深度优先。先设置结果列表和把to_delete做成集合节约时间复杂度。然后dfs(root),如果有结果表示根没有被移除,把根加到结果中,然后dfs。先判断当前节点是否为空,是就返回None,不是就左右dfs,结果直接替换掉当前结点的左右子树。然后判断当前点值是否在to_delete中。不在就返回node,在的话就判断当前结点左右子树是否为空,不为则表示是结果,加到结果列表中,最后再返回None。
学习灵茶山艾府教学视频:77. 组合
python3:深度优先,组合型递归。枚举下一个要选的值存入数组中。当数组长度满足题目要求后存入结果中。可以剪枝,每次递归时判断还需要的数的数量,然后后面递归的for的结束值减去这个数量就完成了剪枝。
反汇编代码分析:if-else。
Unity:三维数学的Mathf。
英语单词,听力,阅读练习。
算法题。
逆向:堆栈平衡和调用约定。
Unity:三维向量入门。
解题思路:遍历取6的余数。
python3整活一行:return 0 if (k:=[i for i in nums if i % 6 == 0]) == [] else int(sum(k) / len(k))
反汇编代码分析:堆栈平衡和调用约定。
Unity:三维数学的Vector3。
英语单词。听力,阅读练习。高数不定积分。
算法题,CTF题。
逆向:一些汇编指令。
Unity使用:InputManage使用。
存疑:网站数学公式有时会无法渲染。
eye candy:有魅力但不聪明的人。
1439. 有序矩阵中的第 k 个最小数组和 - 力扣(LeetCode)
不会,学习了灵茶山艾府的答案。
python3思路:暴力。先获得前mat的第一行,切割到第k个,然后以此遍历后面的行与前面的做排列相加,相加结果从小到大排序后截取k个即可,因为不会用到k后面的数,最后返回相加结果的最后一个即第k个。
时间:
空间:
T2.攻防世界——Web——题目名称-文件包含
之前见过类似的。简单来说就是使用php伪协议,然后发现他过滤了base64和read,于是用如下payload:?filename=php://filter/convert.iconv.<input-encoding>.<output-encoding>/resource=flag.php
。之后打开bp对中间的编码参数进行爆破测试,最后得出结果。
注:中间参数<input-encoding>
和<output-encoding>
之间的点不能换成 ‘/‘,否则会无任何返回结果。
Unity使用:InputManage使用。
英语单词。听力练习。
算法题,CTF题。
学习了逆向工具OD的函数分析。
复习了PHP的PDO的使用。
python3解题思路:先设置一些变量,记录最大值,最小值,总个数,众数值和索引,总和。最小值设为-1。然后做一个for。每次都记录总和和总个数,然后判断最小值是否为-1,是就更新。最大值直接等于当前索引即可。众数则判断当前count是否大于众数值,大于就更新众数值和索引。最后再用一个for来判断中位数。先判断奇偶并获得总个数的一半,奇数还需要取int后+1。然后如果总个数的一半减当前count值大于0就依次减去当前count的值。否则就判断,奇数的话只要小于等于0,mid都等于当前索引,而偶数不同。偶数如果小于才等于当前索引,等于0的话还需要找到下一个数,然后两者相加除以2。
T1.攻防世界——Reverse——easyRE1
我的解法:拖进010Editor直接找flag
其他解法:
- kali:
strings easy-64 | grep FLAG
- windows:
findstr /i flag easy-32
(/i
忽略大小写,使用前先chcp 65001
) - ida:拖进去按F5
T2.攻防世界——Reverse——1000Click
我的解法:连点器点1000次
正常解法:
- CE:首次扫描int,0。然后点一次,然后该值为1,再次扫描,找到地址,改为999,再点击一次。
- OD:插件中文搜索引擎的智能搜索,然后搜Error!!(只搜error会找到别的地方),然后可以看到flag了。
- ida:等待加载完成,ctrl+F找到Error,点击后可以看到success,对它按x,然后跳转,在附近可以直接看到flag。
新增反汇编代码分析文章。
更新了汇编工具的OD相关使用。
更新了PHP的PDO的使用。
算法题。
逆向工具。
2451. 差值数组不同的字符串 - 力扣(LeetCode)
python3解题思路:直接按题意写,找到数组值存入字典中,字典键为不同整形数组元组,值为出现次数和索引的列表,判断该值是否已经存在字典中且字典长度为2。因为题目一定有解。所以如果满足条件就直接跳出循环,然后找到字典中出现次数为1的那个索引值,返回索引值对应的字符串。
OD更新基础用法。
英语单词。
算法题。
修复网站。
题目:1377. T 秒后青蛙的位置 - 力扣(LeetCode)
python3题解思路:先构造领接表,然后进行搜索,搜索跳出条件是时间为0或没有下一节点,如果跳出时访问的位置就是目标,则返回1,否则返回0。然后进行搜索,用dfs和bfs都行。因为不可以重复访问节点,所以每次访问要把访问过的节点设为已访问再访问。访问下一节点时时间要减1。最后接收访问的结果,如果返回结果大于0表示找到目标,用返回结果除以父节点的子节点个数表示概率,依次把结果向上返回得到最终结果。
修复了runtime.js(页脚时钟)和readPercent.js(回到顶端百分比)的显示BUG
readPercent.js:原因未知。修复方式是将>=95
改成<=95
,然后将代码块对换。
runtime.js:错误原因是会自动在尾部加一些</>
标签。修复方式是修改了提示语句中的代码并在尾部加上 //
以防再次出现BUG。
更新了网站文章结构。
V0.9版本制作完成。完成了网站的基础部署,文档部署等。
V0.9配置的网站的拓展如下:
- 文章双栏显示
- 文章出场动画
- 评论信箱
- wowjs动画
- 页脚计时器和其他信息
- 首页轮播栏
- 分类栏
- md外挂标签
- 搜索栏
- 回到顶部百分比
- 来到底部
V0.9配置的网站样式如下:
- 主题色
- 图片
- 一图流背景
- 字体
- 雪花分割线
- 底部选择栏居中
- 顶部菜单栏
- 夜间霓虹灯
- 宇宙星空
- 个人卡片渐变色
- 页面样式整体更改
- 顶栏常驻