LeetCode 力扣刷题合集
Drunkbaby Lv6

LeetCode 力扣刷题合集

  • 尽量保持一天一道吧,后面就不能保证了 …………
  • 代码同步于 GitHub ————

1. 两数之和

https://leetcode.cn/problems/two-sum/

还好,不是很难,核心思想就是嵌套循环的遍历

2. 两数相加

https://leetcode.cn/problems/add-two-numbers/

并不觉得这是一道出的好的题目,如果是自己写的话,需要写输入那些,更有逻辑一些。

3. 无重复字符的最长子串

https://leetcode.cn/problems/longest-substring-without-repeating-characters/

  • 有大佬的题解写的很妙,我这里就处理的不太好了

我的思路是先把所有元素根据规则提取出来,然后再遍历数组,这样造成资源浪费的问题。

大佬的做法第一步就很妙,他没有过分执着于字符串的数组,而是把输入都转化为 ASCII 码。

这样的话,我们每次遍历的时候,就直接把最长的字符串拿出来了,当遇到相同的时候,遍历的位置加一

判断方式用 indexOf 这个方法,太妙了。

4. 寻找两个正序数组的中位数

https://leetcode.cn/problems/median-of-two-sorted-arrays/

  • 它这里要求了时间复杂度比较难

当然如果是我们自己写代码,需要先做个简单的排序。一开始没看到是合并数组,以为只是简单的两个数组拼接,如此一来,思路就错了,要重新开始

这里先做一个合并的工作,再进行判断,简单题;后面看了优化算法,确实厉害

5. 最长回文子串

https://leetcode.cn/problems/longest-palindromic-substring/

对于一个子串而言,如果它是回文串,并且长度大于 22,那么将它首尾的两个字母去除之后,它仍然是个回文串。

例如对于字符串 "ababa" ,如果我们已知 "bab" 是回文串,那么 "ababa" 一定是回文串,这是因为它的首位两个字母都是 a

根据这样的思路,我们就可以用动态规划的方法解决本题。我们用 P(i,j)P(i,j) 表示字符串 ss 的第 ii 到 jj 个字母组成的串(下文表示成 s[i:j]s[i:j] 是否为回文串:

也就是说,只有 S[i+1,j-1] 是回文串,并且 S[i] == S[j] 的时候,S[i,j] 才是回文串。

6. Z 字形

https://leetcode.cn/problems/zigzag-conversion/

挺有意思的一道题目,而且我觉得也不难,可以用很巧妙的算法构造出数据处理。

因为 numRows 始终 -2 就是中间的个数

结合 queue 列并不难,看了力扣大佬的思路,真是牛逼。还有二维数组,或许以前对它很惧怕,现在不应该害怕了啊。。

7. 整数反转

https://leetcode.cn/problems/reverse-integer/

感觉很简单,这里我的思路是将整数先变成字符串,这样一来直接一个循环就出了。但是实际操作的时候遇到了大问题…… 发现无法实现

后面换了一种思维,循环遍历读取,然后做。但是普通的方式对于负数完成不了,所以需要做判断。

  • 在这个关隘上面卡了好久,没搞懂是为什么,看了题解才知道会造成溢出的问题……妙

8. 字符串转换整数

 评论