摘要:
"24. 两两交换链表中的节点" 水题啊,不想说啥。分析题意,可发现两个节点切换时,需要改动的除了两个节点,还有两个节点的前一个节点。代码中middle与back,代表将要交换的两个节点。 阅读全文
摘要:
"23. 合并K个排序链表" 这个题算是考察代码功底吧,基本功,对变量与引用的理解。 不多说了,思路跟第21题基本一致,只不过从两个换成了多个 阅读全文
摘要:
"22. 括号生成" 谨慎后,1A的概率貌似高了些 算是20题的升级版吧, 利用递归来拼成string,然后通过 "20. 有效的括号" 该题的代码来判断生成的string合不合法 看代码吧 尼玛优化后居然比优化前慢5ms,严重怀疑leetcode评测机有毛病,代码跑多久看RP 阅读全文
摘要:
"21. 合并两个有序链表" 两个有序链表合并为一个新的有序链表 class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode ans = new ListNode(Integer.MAX_VA 阅读全文
摘要:
"20. 有效的括号" 括号匹配,用栈即可。高中时第一次学栈后做的第一个题。。 class Solution { public boolean isValid(String s) { Stack characterStack = new Stack(); for (int i = 0; i 阅读全文
摘要:
"19. 删除链表的倒数第N个节点" 1A,开心~ 注意,题目有进阶要求,只允许扫链表1次, 很多链表题跟这个思路一样,在遍历链表的时候,维护一个距离与当前头指针为(n+1)的尾巴标记P即可,当扫到链表结尾的时候,此时P正好指向待删除节点的前一个节点 注意几个细节处理: 0:注意P的初始化 1:n 阅读全文
摘要:
"18. 四数之和" 和之前的三数之和思路完全一样,只不过需要先枚举两个数,然后采用贪心的双指针法。 class Solution { public List fourSum(int[] nums, int target) { Arrays.sort(nums); int p, q; int len 阅读全文
摘要:
"17. 电话号码的字母组合" 暴力即可,深搜 or 迭代 阅读全文
摘要:
跟之前几个题思路大致相同, 贪心中的双指针法 阅读全文
摘要:
此题相当恶心,多次超时 暴力是O(N^3),明显不会过,不用考虑。 比较好一点的思路是,a+b = c,我们可以考虑用hash表存下来每个数字是否出现以及出现的次数,枚举a与b,然后看看此时 (a+b)是否存在。O(N^3),但是,仍然超时。 至此我是想不到更优的思路了,于是开始搜别人的题解 大部分 阅读全文