![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
双指针
BlackMan_阿伟
不积跬步无以至千里
展开
-
Leetcode of August
class Solution: def triangleNumber(self, nums: List[int]) -> int: n = len(nums) nums.sort() ans = 0 # 固定最大边, a + b > c for i in range(n - 1, 1, -1): l, r = 0, i - 1 # 两数之和问题! ...原创 2021-08-05 10:33:21 · 147 阅读 · 0 评论 -
April——76. 最小覆盖子串
class Solution: def minWindow(self, s: str, t: str) -> str: if s==t: return s right = 0 left = 0 start = 0 win_max = float('inf') dic = defaultdict(int) for char in t: ...原创 2021-04-22 19:43:13 · 53 阅读 · 0 评论 -
April——581.最短无需连续子数组
class Solution: def findUnsortedSubarray(self, nums: List[int]) -> int: if not nums or len(nums)==1: return 0 #排序之后进行比较 sort_nums = sorted(nums) left,right = 0,len(nums)-1 #从左向右比较,如果排序后和未排序的结...原创 2021-04-19 10:20:50 · 60 阅读 · 0 评论 -
April——154.寻找旋转数组中的最小值
class Solution: def findMin(self, nums: List[int]) -> int: left, right = 0, len(nums) - 1 while left < right: mid = (left + right) // 2 if nums[mid] > nums[right]: l...原创 2021-04-09 14:44:32 · 78 阅读 · 0 评论 -
April——153. 寻找旋转排序数组中的最小值
class Solution: def findMin(self, nums: List[int]) -> int: if not nums: return 0 if len(nums)==1: return nums[0] l,r = 0,len(nums)-1 while l<r: mid = (l+r)//2 ...原创 2021-04-07 11:18:34 · 85 阅读 · 2 评论 -
April——33.搜索旋转排序数组
class Solution: def search(self, nums: List[int], target: int) -> int: if not nums: return -1 l,r = 0,len(nums)-1 while l<=r: mid = (l+r)//2 #如果恰好找到直接返回 if nu...原创 2021-04-07 10:21:59 · 84 阅读 · 2 评论 -
April——27.移除元素
class Solution: def removeElement(self, nums: List[int], val: int) -> int: #从前往后删 # for i in range(len(nums)-1,-1,-1): # if nums[i]==val: # nums.pop(i) # return len(nums) ...原创 2021-04-06 15:23:15 · 57 阅读 · 0 评论 -
Apirl——26.删除有序数组中的重复元素
class Solution: def removeDuplicates(self, nums: List[int]) -> int: if len(nums)==1: return 1 #从后往前删除,核心在len(nums)-1这个地方 for item in range(len(nums)-1,0,-1): if nums[item]==nums[item-1]: ...原创 2021-04-06 14:56:48 · 103 阅读 · 0 评论 -
April——88.合并两个有序数组
class Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: """ Do not return anything, modify nums1 in-place instead. """ #nums1[:] = sorted(nums1[:m] + nums2) ...原创 2021-04-06 11:06:06 · 87 阅读 · 0 评论 -
February——343.整数拆分
class Solution: def integerBreak(self, n: int) -> int: #数学方法,尽可能拆分成3的乘积 res = 1 if n<4: return n-2 while n>4: n-=3 res*=3 return res*n ...原创 2021-02-05 16:44:11 · 154 阅读 · 0 评论 -
February——1208. 尽可能使字符串相等
class Solution: def equalSubstring(self, s: str, t: str, maxCost: int) -> int: l,res = 0,0 cost = 0 #滑窗法 for i in range(len(s)): cost+=abs(ord(s[i])-ord(t[i])) while cost>maxCost: ...原创 2021-02-05 14:39:15 · 116 阅读 · 0 评论 -
LeetCode——674.最长连续递增序列
class Solution: def findLengthOfLCIS(self, nums: List[int]) -> int: #先判定数组是否为空 if not nums: return 0 j = 0 size = len(nums) #一开始设置0出错了,因为只要是非空的数组最终都会出现长度至少为1的非空数组 res = 1 for i ...原创 2021-01-24 09:35:40 · 94 阅读 · 0 评论 -
《Leetcode of November》454.四数相加II
class Solution: def fourSumCount(self, A: List[int], B: List[int], C: List[int], D: List[int]) -> int: num = 0 dic = {} for i in A: for j in B: dic[i+j] = dic.get(i+j,0)+1 for i in C: ...原创 2020-11-27 10:07:04 · 127 阅读 · 0 评论 -
《Leetcode of November》18. 四数之和
class Solution(object): def fourSum(self, nums, target): lens = len(nums) nums.sort() res = [] if(not nums or lens < 4): return res ## 第一层循环:确定i值 for i in range(lens...原创 2020-11-27 10:02:20 · 67 阅读 · 0 评论 -
《Leetcode of November》链表的反转总结(整体反转和部分反转)
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def reverseList(self, head: ListNode) -> ListNode: if not head: return None...原创 2020-11-26 15:35:58 · 177 阅读 · 0 评论 -
《Leetcode of November》字母异位词总结
class Solution: def isAnagram(self, s: str, t: str) -> bool: if not s and not t: return True if not s or not t or len(s)!=len(t): return False #hash表法 #先构建一个字典 dic = {}...原创 2020-11-22 21:02:13 · 125 阅读 · 0 评论 -
《Leetcode of November》82. 删除排序链表中的重复元素
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def deleteDuplicates(self, head: ListNode) -> ListNode: if not head or not head.next...原创 2020-11-21 20:09:18 · 121 阅读 · 0 评论 -
《Leetcode of November》83. 删除排序链表中的重复元素
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def deleteDuplicates(self, head: ListNode) -> ListNode: if not head or not head.next...原创 2020-11-21 20:01:19 · 88 阅读 · 0 评论 -
《Leetcode of November》328.奇偶链表(双指针法)
这个题目要求下标奇数的放在一下,下标偶数的放在一起,因此用双指针就是比较方便的 odd为奇指针,用head.next表示;even为偶指针用head来表示 遍历整个链表,将下标是奇数的指针都指向以odd开头的指针,下标是奇数的指针都指向以even指向的指针 然后将奇数的链表链在偶数链表的后面 就完成了该操作...原创 2020-11-13 21:30:02 · 100 阅读 · 0 评论 -
《Leetcode of November》922.按奇偶数排序数组II
class Solution: def sortArrayByParityII(self, A: List[int]) -> List[int]: if not A: return A #i代表偶数指针,j代表奇数指针 i,j=0,1 size = len(A) while i<size and j<size: while i<size...原创 2020-11-12 20:18:01 · 71 阅读 · 0 评论 -
《Leetcode of November》31.下一个排列(重点是下一个)
class Solution: def nextPermutation(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ i = len(nums) - 2 #找到一个较小的数 while i >= 0 and nums[i] >= nums[i...原创 2020-11-10 23:01:19 · 67 阅读 · 0 评论 -
《Leetcode of November》941. 有效的山脉数组
class Solution: def validMountainArray(self, A: List[int]) -> bool: if not A: return False size = len(A) left,right = 0,len(A)-1 #从左到右找到最高点 while left<size-1 and A[left]<A[left+1]...原创 2020-11-03 11:30:59 · 708 阅读 · 1 评论 -
《Leetcode of October》234.回文链表
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def isPalindrome(self, head: ListNode) -> bool: if not head: return True ...原创 2020-10-23 16:23:30 · 95 阅读 · 0 评论 -
《Leetcode of October》925. 长按键入
class Solution: def isLongPressedName(self, name: str, typed: str) -> bool: size = len(name) target = len(typed) i,j=0,0 while j<target: if i<size and name[i]==typed[j]: ...原创 2020-10-21 11:15:57 · 107 阅读 · 0 评论 -
《Leetcode of October》19. 删除链表的倒数第N个节点
# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode: ...原创 2020-10-19 21:12:13 · 74 阅读 · 0 评论 -
《Leetcode of October》75. 颜色分类
class Solution: def sortColors(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ #双指针的思想就是:只管0和2,不管1.如果遇到0就把它放在列表头,如果遇到2就把它放在列表尾把,如果是1直接跳过 l,index,r = 0,0,len(nu...原创 2020-10-08 16:09:53 · 101 阅读 · 0 评论