- 博客(19)
- 收藏
- 关注
原创 Leetcode打卡【Day18】外观数列
这一题一开始并没有理解题目的意思,就盲目使用哈希表统计每次外观数列的数字出现的次数,提交过一次就发现题目根本不是那个意思(再仔细看看题目哈)。这一题还是挺简单的,n耶比较小,只要模拟过程即可,下面给出代码。
2024-05-12 13:35:16 318 1
原创 Leetcode打卡【Day17】实现 strStr()
当然最近复习数据结构的时候有看到KMP算法,能把时间复杂度降到线性,但是教材上的下标从1开始,所以写这一题的时候改了好久,还是得理解这个算法。: 这一题最简单的思路就是采用暴力方法进行比较,但是时间复杂度就会达到。
2024-05-11 14:25:04 285 1
原创 Leetcode打卡【Day16】字符串转换整数(atoi)
看了题解,发现可以用有限自动机的思想(好好好,编译原理白学了),用一个DFA去模拟这个过程,有兴趣可以自己去看题解哦!: 跟着题目思路即可,但是边界溢出判断太抽象了,写了好久,写出来也是又臭又长,哭死!
2024-05-06 23:57:42 245
原创 Leetcode打卡【Day15】验证回文串
双指针,一个指头,一个指尾,以此判断字母数字字符是否相等即可。这个题目还是有点坑,当时判断条件写的有问题,没有考虑到数字的情况,导致样例“0P”(0和P中间差值为32)过不了,后面还是调出来了。还是自己写了两个函数去判断,但是题解中好像有库函数可以直接调用,以前没遇到过,想知道可以自己去看题解(太懒了,知道怎么实现的就可以了)。
2024-05-03 18:38:44 272 1
原创 Leetcode打卡【Day14】有效的字母异位词
当然这道题也可以采用先排序再比较的方法,但是时间复杂度就会达到。: 又是一道经典的哈希题,秒解!,所以还是哈希更优秀。
2024-04-30 22:37:09 80 1
原创 Leetcode打卡【Day13】字符串中的第一个唯一字符
在题解中,还看到了用哈希表记录字母的下标,即键值对为<字母,下标>,若是第一次出现则设为下标,其他情况设为1。第二次遍历哈希表,查找不为1且最小的下标,若没有则返回-1(说明没有唯一字符)。: 毕竟之前写了好几道哈希的题了,直接一眼哈希,两次遍历,第一次记录每个字母出现的次数,第二次查找第一个唯一字符并返回下标,若找不到,则返回-1。
2024-04-29 19:45:02 203
原创 Leetcode打卡【Day11】旋转图像
如果要从最外围到矩阵中心,一圈一圈旋转,就会很麻烦。这一题就可以发现规律,可以先求矩阵的转置,在交换对称的列,可以自行验证,下面给出代码。
2024-04-28 00:10:30 193
原创 Leetcode打卡【Day10】有效的数独
的小矩阵中看有没有重复的,所以就可以用三个哈希表判断是否有重复冲突,小矩阵的计算方式可以见代码然后理解,注意题目中的使用 char 存储,所以要采用减'1'的方式计算下标。: 这一题还是采用哈希的想法,从行、列和每个。
2024-04-26 23:09:31 489 1
原创 Leetcode打卡【Day9】两数之和
这一题最容易想到的思路就是暴力求解,枚举每一对数,看两数之和是否为。,具体写法写了,下面给出另一种思路:哈希表。底层是红黑树(还没学的,还不太了解),,但是这种方法的时间复杂度达到了。底层是哈希表,时间复杂度可以达到。
2024-04-24 23:23:17 269 1
原创 Leetcode打卡【Day8】移动零
还可以使用双指针来写,慢指针记录当前序列第一个为0的下标,快指针记录当前下标,如果如果慢指针小于快指针,说明有0,就交换位置。记录当前非零数应该赋给哪个位置,并且后面的数字应该全为0。:将后面的非零的数字依次覆盖前面的数字,并用一个。
2024-04-24 00:00:55 334 1
原创 Leetcode打卡【Day7】加一
此时数组的长度还会加一,这种就要单独处理,其他情况其实遍历。: 其实这一题主要解决的是进位的问题,例如。:这一题最开始联想到大数加法,,思路就是模拟手算竖式加法。数组并对其进行修改即可。
2024-04-22 21:05:25 222
原创 Leetcode打卡【Day6】两个数组的交集Ⅱ
第一想法当然使用两张表存储两个数组中数字出现的次数啦(这道题的数组范围都比较小),然后遍历表得到次数的最小值,就可以加入到结果中了,不过这样的时空复杂度较大。:既然想到用哈希表了,那有没有更加简单的写法呢?当然有了(看注释即可)!:看完题解,发现对于有序数组可以采用双指针的方法,还是可以理解的。
2024-04-21 23:38:55 559 1
原创 Leetcode打卡【Day5】只出现一次的数字
两个相同的数异或为0;任何数和0异或得0;异或运算满足交换律和结合律。检查是由有重复的,有重复的就剔除,最后留下只出现一次的。: 看到题解,发现一个很巧妙的方法——: 遍历数组,利用集合。,能让时间复杂度降到。
2024-04-21 00:13:21 155 1
原创 Leetcode打卡【Day4】存在重复元素
当然,这一题也可以先进行排序,再进行遍历比较得出结果。看过题解后,发现我写的方法叫做哈希表(之前没怎么学过算法)。去记录哪些没有重复,遍历原数组时在集合里查有无重复元素,若有直接返回。: 这一题可以直接用个集合。
2024-04-19 19:16:09 202 1
原创 Leetcode打卡【Day3】旋转数组
看完题解后,发现还有另外一种解法,也可以实现原地旋转,要用到一定的数学原理,有点难思考,下面给出代码,数学推导可以参考。,得到平移后的结果,再覆盖回原数组,并且数组平移运算可以采用取模操作。:题目中提示可以采用原地旋转的方式,可以考虑用。个单位,即相当于翻转数组后,再将区间。代替平移操作,向右循环平移。
2024-04-18 22:48:21 231
原创 Leetcode打卡【Day2】买卖股票的最佳时机Ⅱ
表示过完当天后手中没有股票,此时可以分为两种情况:①前一天过完后手中没有股票,当天不做任何操作(包括当天购买并出售股票,也相当于没有变化);②前一天过完后持有股票,并在当天出售。表示过完当天后手中持有股票,此时可以分为两种情况:①前一天过完后手中没有股票,并在当天购买;②前一天过完后持有股票,当天不做任何操作(包括当天购买并出售股票,也相当于没有变化)。:动态规划题的关键是找到现在状态与之前状态的联系,得到递推式,得以求解。:该题可以采用动态规划的思想,由于有两种状态:购买或出售股票,故可以采用。
2024-04-18 00:43:25 361
原创 Leetcode打卡【Day1】删除排序数组中的重复项
第一眼看到非严格递增还以为是二分法,往后继续看发现不对,好像遍历一遍数组就可以:遍历时,如果。计数器记录当前有几个不同的数。提交之前想到要判断数组为空的情况,再补充一个判断。就相当于慢指针,表示下一个不同元素要填入的下标位置,而。就相当于快指针,表示遍历数组到达的下标位置,初始都为1。:看到题解后,发现是双指针,我写的。不相等,那么就应该用。覆盖前面的,再用一个。
2024-04-17 00:27:56 132
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人