- 博客(12)
- 收藏
- 关注
原创 Leetcode 141 & 142 环形链表Ⅰ、Ⅱ【链表】
Leetcode 141 1.思路 1)设置快慢指针,如果可以重合,则证明有环 2.代码 # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solut...
2019-01-31 13:11:48
137
原创 Leetcode 55 跳跃游戏 【贪心算法】
1.思路 1)maxpos为已经经过的部分的数组所能达到的最远处 2)遍历,每次都更新maxpos,其为之前maxpos和i+nums[i]的最大值 2.代码 class Solution: def canJump(self, nums): """ :type nums: List[int] :rtype: bool """ ...
2019-01-29 21:31:01
225
原创 Leetcode 92 反转链表 【链表】
本题介绍链表里的头插法。 1.思路 1)前进到反转开始处附近 2)头插法 头插法: 1)3插到2前 2)4插到3前 3)完成2->3->4到4->3->2的反转 注意防止断链,具体方法细节在代码的注释中。 首先防止q前插导致下一循环断链,记录下q.next; 然后插入q在头部(两步); 最后初始化下一循环p,q。 2.代码 class Solution: def r...
2019-01-29 17:21:50
127
原创 Leetcode 86 分隔链表【链表】
1.代码 # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def partition(self, head, x): ""...
2019-01-28 10:11:14
147
原创 Leetcode 83 删除排序链表中的重复元素【链表】
本题是简单的链表题。 1.思路 1)单指针,下一个和上一个相同,p.next指向p.next.next,否则p指针后移 这里不用哑节点,直接开始就判断 2.代码 # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # se...
2019-01-27 11:13:18
145
原创 Leetcode 61 旋转链表【链表】
本题是稍有难度的链表题。 1.思路 1)计算链表长度 2)计算新链表起始节点 解题步骤 1)边界检查——k=0或者空链表 2)辅助节点p 3)计算链表长度 4)链表成环 5)计算step,确定新的头节点 6)辅助头节点指向新的头节点 2.代码 # Definition for singly-linked list. # class ListNode: # def __init__(self...
2019-01-26 11:11:31
187
原创 Leetcode 24 两两交换链表中的节点【链表】
本题是比较基础的链表题。链表题的典型套路。 1.思路 1)边界情况——只有少于2个元素 2)定义p,q两个指针 开始循环: 3)交换 改变p.next,q.next(此时p,q不变) p.next指向q,完成交换 4)进行下一循环的初始化 p是下一次要交换的两个节点的前一个节点 q是下一次要交换的两个节点中的第一个节点 2.代码 # Definition for singly-linked li...
2019-01-25 18:31:19
104
原创 Leetcode 21 合并两个有序链表【链表】
本题是比较基础的链表题。链表题的典型套路。 1.思路 1)创建头节点,并用res记录其位置 2)都不为None时,比较并且插入,注意每次插入后的l1orl2以及head的后移 3)当有出现None时,插入另一个的剩余部分 4)返回res.next 2.代码 # Definition for singly-linked list. # class ListNode: # def __ini...
2019-01-25 16:21:22
76
原创 Leetcode 19 删除链表的倒数第N个节点【链表】
本题是比较基础的链表题。 1.思路 1)单次遍历 2)双指针 Note:两次遍历的方法只需要一个指针,空间换时间,因此单次遍历不可避免使用双指针 首先,双指针指向头指针,rear向后移动n次。 如果此时指针已经指向None【边界情况】,意思就是第一个元素是需要被删除的,返回head.next 如果此时指针不指向None,则head和rear都向后移动,直到rear.next是None,此时删除he...
2019-01-24 12:08:43
77
原创 Leetcode 2 两数相加【链表】
本题是比较基础的链表题。 1.思路 1)构造头部节点 2)记录表头位置 3)边相加,边移位(构造下一个节点,指向下一个节点) Note:最后return的时候要注意不能把头节点也返回(为了省时间,就没有把多余的节点删除) 2.代码 # Definition for singly-linked list. # class ListNode: # def __init__(self, x): ...
2019-01-23 11:32:41
195
原创 Leetcode 15 三数之和【数组】
1.思路 1)有序化 2)固定住第一个数,利用头尾指针,依次向中间靠拢搜寻三数之和为0 3)无重复 具体思路: Step1 首先固定住一个i,(为了避免重复)当i和i-1相同时,continue(即i++)进行下一个外循环 Step2 每个外循环内再指定i+1头指针, L-1尾指针,当j<k时候,持续执行内循环 Step3 给出每个i对应的target, 如果符合就append,并且j...
2019-01-22 15:49:12
81
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人