03 2020 档案
摘要:61. 旋转链表 所谓旋转就是把需要断开的地方断开,断开处右边为新的头结点,以及把链表尾部与head连起来。 找到断点可以 用双指针,while count < k:指针 p1 到达第 k 个结点时(之前如果 p1.next=None,就从head从头开始),p2 从头结点开始,两个指针一起遍历。直
阅读全文
摘要:31. 下一个排列 首先找到从右边起第一对升序的数对(a[i−1] < a[i]),此时a[i−1]右侧的排列是一个最大排列(因为已经是降序了)。找到a[i-1]右起第一个比它大的数a[j],将它交换位置。相当于找到右边比原a[i-1]刚好大一点的数。再翻转a[i-1]右侧的数的顺序(不包括自己),
阅读全文
摘要:1. 两数之和 把遍历过的数放在字典,数字做key,序号做value。遍历时先查字典,target减它是否为字典中key。时间复杂度O(n)。 2. 两数相加 可把比较短的链表差的位数置零补充。 3. 无重复字符的最长子串 可以字典存储滑动窗口,[i, j) 遇到重复i+1否则j+1。 4. 寻找两
阅读全文