1. 两数之和

题目链接:https://leetcode.cn/problems/two-sum/

还是只会暴力搜索法,其实也能想到要用空间换时间,但是不知道用啥数据结构比较合适。。。。

仔细想想,就是要把一个数字存到一个能快速搜索的数据结构里,比如target=7,遍历nums{2,3,4}的过程中,遍历到3的时候要能快速找到另外一个数据结构中的数字4,这么看来也就hash table里的key比较合适,正好也能用value保存key对应的数组下标。

 

19. 删除链表的倒数第 N 个结点

题目链接:https://leetcode.cn/problems/remove-nth-node-from-end-of-list/

这道题目,内存占用会比较多,空间复杂度比较高,不过还好vector里保存的都是指针,没看官方题解,省得记不住,还是自己的思路比较容易记忆。

 

11. 盛最多水的容器

题目链接:https://leetcode.cn/problems/container-with-most-water/

这道题,也是只能想到最笨的方法,两层循环,复杂度最高,所以提交之后就提示运行超时。。。。

等我研究官方题解再来更新吧。。。

已更新,官方的双指针法,关键是移动左右两边哪个X轴坐标,这里选的是Y轴低的,这样才有可能补偿X轴(也就是底边)减少1导致的面积缩小问题:

 

20. 有效的括号

题目链接:https://leetcode.cn/problems/valid-parentheses/submissions/

这道题也没做出来,因为没有想到用栈来保存括号的对应关系,而是想着用递归判断子串是否是左右匹配的括号。看了官方题解才想明白,汗!!!

 

5. 最长回文子串

题目链接:https://leetcode.cn/problems/longest-palindromic-substring/

下面这个解法理论上应该是正确的,暴力搜索法,但是实际上提交上去就会提示执行超时,因为真的是太费时间了。

等我研究下官方题解里面的高级算法再来重写一个吧,汗!!!

感觉自己就是个渣渣。。。。。。。。

ps. 已更新了中心扩展法实现。

 

8. 字符串转换整数 (atoi)

题目链接:https://leetcode.cn/problems/string-to-integer-atoi/

 

21. 合并两个有序链表

题目链接:https://leetcode.cn/problems/merge-two-sorted-lists/

刚开始思路有点乱,搞了快一个小时还是有错误,原因是我想把list1的node遍历一遍,按大小插入到list2,同时list2也要跟着一起遍历,这样就很难控制两个链表遍历的顺序和位置。

后来折腾很久都合并不好,就重头考虑了一把,感觉只需要把两个链表中比较小的那个node放到merged链表里就行了,谁的node被移动了,就跳到下一个node继续跟另一个链表的node比较大小,没有被移动到链表node位置不变,继续用来下一次比较,这样一来就简单多了,就是单链表的尾部插入操作了。

 

14. 最长公共前缀

题目链接:https://leetcode.cn/problems/longest-common-prefix/

 

7. 整数反转

题目链接:https://leetcode.cn/problems/reverse-integer/

这个题目关键点在于反转后的数字是否越界(超出int型范围),而且还不能用long型来判断是否越界(不能存储64位整型),这个判断条件我不了解,没有推导出来((rev < INT_MIN / 10 || rev > INT_MAX / 10)),所以最后提交之后用例有几个没通过。下面这个是看了官方题解写出来的。

 

我原来的思路(错误代码,输入x=1534236469时用例执行失败):

ps. 为啥要先转换成字符串之后再转回整数,主要是想尝试不同的解法(这道题跟之前回文数判断的题目有点类似,之前用了取模、除10得到最后一位数字的方法,这次想尝试另外的解法:http://aspirer.wang/?p=1585

 

450. 删除二叉搜索树中的节点

题目链接:https://leetcode.cn/problems/delete-node-in-a-bst/

这个题目自己没做出来,看的官方题解,最后一步successor找到之后再删除最后返回新的root这段没怎么看明白。