- 博客(47)
- 收藏
- 关注
原创 leetcode347. 前 K 个高频元素
nums [ ] int } // 创建堆(小根) func NewMyHeap() * Myheap {nums : make([ ] int , 1) , //这里很关键,提前把nums[0] = 0设置好了,好让下面根节点从1开始 ,这点很关键 } } func(this * Myheap) Push(val int) {
2023-02-10 10:27:28 277
原创 leetcode150. 逆波兰表达式求值
在上一篇文章中提到了 递归就是用栈来实现的。所以这一点我们在后续讲解二叉树的时候,会更详细的讲解到。那么来看一下本题,。大家可以把运算符作为中间节点,按照后序遍历的规则画出一个二叉树。但我们没有必要从二叉树的角度去解决这个问题,只要知道逆波兰表达式是用后序遍历的方式把二叉树序列化了,就可以了。在进一步看,本题中每一个子表达式要得出一个结果,然后拿这个结果再进行运算,那么,和中的对对碰游戏是不是就非常像了。
2023-02-08 09:41:58 250
原创 leetcode20. 有效的括号
若是右括号,且stack不为空(为空说明右括号多,返回false),与栈顶元素做匹配,匹配上就出栈(匹配不上返回false),若不为空说明左括号多,返回false。
2023-02-07 10:37:31 143
原创 leetcode151. 反转字符串中的单词
小细节:每次fast指向新的字母时slow就要先空出一个空格,slow指向第0个位置时除外。这里把反转抽象成一个函数。就是引用传递,底层数组会直接跟着变化。将缩短后的ss全部反转。代码很妙,细细体会学习。
2023-02-02 21:49:08 65
原创 leetcode剑指 Offer 05. 替换空格
从前向后填充就是O(n^2)的算法了,因为每次添加元素都要将添加元素之后的所有元素向后移动。需要再加一个for循环。其实很多数组填充类的问题,都可以先预先给数组扩容带填充后的大小,然后在从后向前进行操作。有同学问了,为什么要从后向前填充,从前向后填充不行么?
2023-02-01 21:03:42 64
原创 leetcode541. 反转字符串 II
这样写起来代码比较长,反转那一部分核心代码是重复的,只是。具体思路很简单,就是分类有点多,核心的反转代码和。总长度l大于2k,剩余的>=k,这种情况时,初始值不同,可以拿出来写一个函数,然后调用。,多循环一轮,把剩余的前k个再反转一下。一样,只是修改一下参数的初始值。
2023-02-01 15:38:27 55
原创 leetcode454. 四数相加 II
虽说是经典哈希表问题,但一开始确实不太能想到用哈希表来做,直接就是暴力。题目对应的方法,这种感觉,还是要多培养,慢慢形成映射。首先想到的肯定是四个for循环,显然时间复杂度n^4。若分为1组和3组,则显然时间复杂度n^3。还没做到,这里先不管。
2023-01-30 22:52:37 38
原创 leetcode202. 快乐数
题目中说了会,那么也就是说求和的过程中,sum会重复出现,这对解题很重要!当我们遇到了要了。所以这道题目使用哈希法,来判断这个sum是否重复出现,如果重复了就是return false, 否则一直找到sum为1为止。还有一个难点就是求和的过程,如果对取数值各个位上的单数操作不熟悉的话,做这道题也会比较艰难。
2023-01-29 15:57:08 42
原创 leetcode350. 两个数组的交集 II
由于题目限定了[1,1000],所以直接定义一个1000的数组即可,如果没有限定,则不能使用数组,造成资源浪费。
2023-01-29 15:56:05 33
原创 leetcode349.两个数组的交集
由于题目限定了[1,1000],所以直接定义一个1000的数组即可,如果没有限定,则不能使用数组,造成资源浪费。
2023-01-29 15:55:24 37
原创 leetcode438. 找到字符串中所有字母异位词
上述解法有两处行不通1.由于匿名函数的原因,这个写法不可行。在上面那段代码中,需要排序的slice是s_byte,对于slice中的第i或者第j个元素,less function直接对s_byte[i]和s_byte[j]进行比较操作;而在下面那段代码中,需要排序的slice是,对于slice中的第i或者第j个元素,less function 仍然是对s_byte[i]和s_byte[j]进行比较操作。实际上,less function应该比较的对象是和。此处详见。
2023-01-28 14:53:22 64
原创 leetcode49. 字母异位词分组
1.将str中的字母变成[]byte,然后再按照ascii码顺序进行排序。3,再写入一个二维数组切片[][]string,并返回。value是和index具有相同字母的所有字符串。,也就是按ascii码排好顺序的字符串。2.map中:index是字符串的。怎么把具有相同字母的字符串归类。
2023-01-25 15:53:55 26
原创 leetcode242. 有效的字母异位词
a对应ascii码为97,26个小写英文字母对应的ascii码 减去。for循环中,r是int32类型也就是rune类型。正好对应数组中0-25。
2023-01-25 15:49:39 28
原创 leetcode剑指 Offer 29. 顺时针打印矩阵---同54题
【代码】leetcode剑指 Offer 29. 顺时针打印矩阵---同54题。
2022-12-15 18:20:41 43
原创 leetcode904. 水果成篮
是 collections 库中的一个函数,可以用来统计一个 python 列表、字符串、元组等可迭代对象中每个元素出现的次数,并返回一个字典。使用 Counter 统计完词频后可以使用。方法来查找出现频率最高的 n 个数字及其出现次数。
2022-12-15 18:18:57 128
原创 leetcode209. 长度最小的子数组---滑动窗口(双指针)
看着好像没什么错,但是找个例子推一遍就会发现问题:如果多次满足。这就是为什么运行测试用例时为什么总是返回0的原因。循环用的妙,倘若不用里面的这个。并没有更新,但却进行了多次的。的条件,此时更新的只是。
2022-12-15 18:18:10 45
原创 leetcode 977. 有序数组的平方---双指针
只能令尾指针一直向左移动,[-5,-3,-2,-1]对于这个实例就无法满足。数组,因为在原地操作很难,无法实现首尾指针同时向中间移动。
2022-12-15 18:17:02 47
原创 leetcode 844. 比较含退格的字符串---双指针
是在每个数组中放一个指针,用于比较两个指针指向的值。多的情况,一种是两个数组都多,一种是只有一个数组多。中该比较的元素,找到后,下面开始比较。,不用返回数组中具体的值,因此。写的有点复杂,有点小难度。
2022-12-12 21:07:33 72
原创 leetcode 27.移除元素---双指针
最后一步left已然+1,所以直接返回left即可,无需再+1.解法,思路并不难,主要是体会其中的极简代码写法。从0开始向前游走,遇到。
2022-12-12 21:05:58 66
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人