双指针
一杯小熊
这个作者很懒,什么都没留下…
展开
-
LeetCode 581 最短无序连续子数组
解法: 代码: 需要注意的地方:left和right初始值的设置, left, right = 0, -1 #为了保证如果是一个排好序的数组返回0 class Solution: def findUnsortedSubarray(self, nums: List[int]) -> int: n = len(nums) left, right = 0, -1 #为了保证如果是一个排好序的数组返回0 MIN, MAX = n...原创 2021-05-07 15:54:51 · 38 阅读 · 0 评论 -
删除链表的倒数第n个节点/LeetCode.No.19
用快慢指针,时间复杂度O(n), 空间复杂度O(1) # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def removeNthFromEnd(self, head: ListNode, n: int) -&g..原创 2021-01-20 21:24:16 · 61 阅读 · 0 评论 -
盛水最多的容器/LeetCode.No.11/中等
方法:左右两个双指针,时间复杂度O(n) class Solution: def maxArea(self, height: List[int]) -> int: n = len(height) left, right = 0, n-1 res = -1 while left < right: tmp = min(height[left], height[right])*(right-le...原创 2021-01-14 21:27:39 · 44 阅读 · 0 评论 -
汇总区间/LeetCode.No.228
使用双指针,维护left和right两个指针,使用两个while循环分别前进两个指针 class Solution: def summaryRanges(self, nums: List[int]) -> List[str]: if not nums: return [] n = len(nums) if n == 1: return [str(nums[0])] left,..原创 2021-01-10 20:51:06 · 47 阅读 · 0 评论