《JDFrame》《FastRetry》《UniHttp》作者
获得徽章 17
575. 分糖果
思路:
逐次去吃糖,如果这个糖没被吃过就吃, 否则直到结束或者吃的数量到达 n / 2;
53. 最大子序和
思路1: 暴力 时间复杂度 n(n+1)/2 => 总体时间复杂度: O(n^2)
假设 i 表示窗口的起始点, 然后计算每个以 i 起始点的每个窗口大小(从1,2,3...N)的和, 进而求出其中窗口最大和
思路2: 动态规划 时间复杂度: O(N)
状态: f[n] 表示 以第n个数为结尾的子窗口的最大和
状态转移方程:
f[n] = max(f[n-1] + nums[n], nums[n])
因为当 f[n-1]] > 0时, 说明为增益效果。 所以此时以n为结尾的最大连续区间和就是 f[n-1] + nums[n]
而当 f[n-1] < 0 时, 说明为负增益效果。 所以此时以n为结尾的最大连续区间和就是 nums[n]
思路3: 贪心算法 时间复杂度: O(N)
从左到右迭代累加计算以 i 为结尾的连续窗口的和sum, 如果sum < 0, 舍弃前面部分, 直接重新计算窗口和sum
19. 删除链表的倒数第 N 个结点
思路1:
先计算链表长度size, 要删除的节点就是第(size - N + 1)个节点
时间复杂度: size + n
思路2:
先把所有元素依次入栈, 然后依次出栈, 出到第n个节点就是要删除的节点的前驱节点
时间复杂度: size + n
思路3: 快慢指针
慢指针比快指针慢N个节点, 然后同时移动, 当快指针遍历到结尾时, 这个慢指针就是要删除的节点的前驱节点
时间复杂度: size
661. 图片平滑器
思路:
累加x,y周围9个点的和并求平均值即可
xdm,19款16寸Macbook和即将出的M1x怎么选啊,想买新的又怕很多中间件和库依赖不兼容。
 xdm,你们洗澡的时候一般掉多少头发,在多少内是正常的
题目 495. 提莫攻击
在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。现在,给出提莫对艾希的攻击时间序列和提莫攻击的中毒持续时间,你需要输出艾希的中毒状态总时长。
你可以认为提莫在给定的时间点进行攻击,并立即使艾希处于中毒状态。并且中毒效果不能叠加, 如果已在中毒状态中再次攻击, 会开启新一轮的中毒效果, 上次中毒效果中止
题目: 有一个字符串从a-z,找出这个字符串的所有子集组合
思路:
比如 有 abc , 则从[1, 2^3-1]的每一个二进制数表示一种组合情况
-----
c b a
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
------
则所有的组合情况有: [a, b, ab, c, ac, bc, abc]
所以只需要枚举每个二进制数, 然后把这个二进制数生成对应的组合即可
比如 011 生成 ab
## 141. 环形链表
思路: 快慢指针
快指针在前每次走2步, 慢指针在后每次走1步. 如果快指针追上了慢指针说明存在循环. 如果指针遍历到null说明不存在循环.
下一页