
leetcode
:)#
自有中正之道,不亢不卑,不骄不诌,何得如此也!
展开
-
【常见排序】
文章目录寻找相同字符串冒泡排序直接插入排序折半插入排序(Binary)快速排序堆排序 寻找相同字符串 strs = ["tars","st0r","rats","arts","st0r"] strs = sorted(strs) def findSameStr(strs): for i in range(len(strs) - 1): if len(strs[i]) == len(strs[i + 1]): # 如果前后两个字符串长度相等 for j in原创 2022-03-28 16:30:29 · 462 阅读 · 0 评论 -
904. 水果成篮,59. 螺旋矩阵 II
此题为滑动窗口系列中的计数问题,freq数组记录现在窗口中两种水果的数目,count记录现在窗口中有多少种不同的水果,如果count<=2,那么rightIndex指针可以一直向右移动,直到count>2,当count>2时,说明窗口中的水果种类超过2,为了减少水果种类,leftIndex指针就要向右移动,移动的同时还要更新freq数组,最后取最大值即可。 def totalFruit(fruits): res = 0 leftIndex = 0 rightInde原创 2022-03-31 10:22:30 · 190 阅读 · 0 评论 -
【链表】-2.两数相加206. 反转链表203. 移除链表元素24. 两两交换链表中的节点
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution(object): def addTwoNumbers(self, l1, l2): """ :type l1: ListNo原创 2022-03-31 13:39:24 · 275 阅读 · 0 评论 -
438. 找到字符串中所有字母异位词
def groupAnagrams(self, strs): """ :type strs: List[str] :rtype: List[List[str]] """ mp = collections.defaultdict(list) for str in strs: key = "".join(sorted(str)) mp[key].append(str) return list(mp.values()) .原创 2022-04-01 14:08:17 · 58 阅读 · 0 评论 -
【堆,哈希表,集合】
文章目录heapq模块操作堆的使用——264. 丑数 II哈希表enumerate()函数语法参数集合定义创建基本操作添加元素移除元素清空集合判断元素是否在集合/字典中存在 heapq模块 Python对堆这种数据结构进行了模块化,我们可以通过调用heapq模块来建立堆这种数据结构,同时heapq模块也提供了相应的方法来对堆做操作。 操作 heap = [] #创建一个空堆 heappush(heap,item) #往堆中插入一条新的值 item = heappop(heap) #从堆中弹出最小值 item原创 2022-04-05 22:21:43 · 95 阅读 · 0 评论 -
【递归与回溯】
文章目录22. 括号生成方法一方法二:标准回溯17. 电话号码的字母组合组合问题216. 组合总和 III40. 组合总和 II学习点回溯法处理字符串问题131. 分割回文串tips反思93. 复原 IP 地址排列问题46. 全排列47. 全排列 II学习点子集问题学习点78. 子集90. 子集 II不相邻元素同一层去重491. 递增子序列332. 重新安排行程总结与思考 22. 括号生成 方法一 class Solution(object): def generateParenthesis(se原创 2022-04-07 13:44:43 · 109 阅读 · 0 评论 -
【快速幂,快速乘】29. 两数相除,50. Pow(x, n)
文章目录题目疑难点int类型转成字符串代码实现 题目 疑难点 int类型转成字符串 a = 1 str = "" str += f'{a}' print(str) 代码实现 def divide(self, dividend, divisor): """ :type dividend: int :type divisor: int :rtype: int """ INT_MIN,INT_MAX = -原创 2022-04-10 16:51:28 · 198 阅读 · 0 评论 -
【双指针原地更改字符串】38. 外观数列,443. 压缩字符串
def countAndSay(self, n: int) -> str: def describe(str): res = "" l = len(str) left = 0 right = 0 c = str[left] while right < l: ...原创 2022-04-10 19:18:58 · 63 阅读 · 0 评论 -
【31. 下一个排列】
题解 link def nextPermutation(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ n = len(nums) if n <= 1: return i,j,k = n-2,n-1,n-1 #fi.原创 2022-04-10 21:22:16 · 67 阅读 · 0 评论 -
【873. 最长的斐波那契子序列的长度】
文章目录最长的斐波那契子序列的长度动态规划+哈希表 最长的斐波那契子序列的长度 动态规划+哈希表 若当前扫描到A[i],那么A[i]之前的数字A[j](j<i)都可能与A[i]组成fib数列,前提是存在A[k](0<=k<i<j),使得A[i]=A[j]+A[k],这个A[k]A[j]A[i]数列(以 A[i] 结尾前一个数字是 A[j] 的斐波那契数列)是以 A[j] 结尾前一个数字是 A[k] 的斐波那契数列的基础上增加一个数字 A[i],因此状态转移方程是f(i,j) = f原创 2022-04-14 23:44:41 · 196 阅读 · 0 评论 -
【双指针】
文章目录双指针376. 摆动序列6071. 完成所有任务需要的最少轮数27. 移除元素26. 删除有序数组中的重复项283. 移动零844. 比较含退格的字符串空间复杂度为O(1)的解法栈方法977. 有序数组的平方209. 长度最小的子数组 双指针 376. 摆动序列 def wiggleMaxLength(self, nums): """ :type nums: List[int] :rtype: int """ n = len(nu原创 2022-04-15 13:48:16 · 198 阅读 · 0 评论 -
【回溯与动态规划】377. 组合总和 Ⅳ
377. 组合总和 Ⅳ 回溯法求解 -超时 def combinationSum4(self, nums, target): """ :type nums: List[int] :type target: int :rtype: int """ temp = [] res = [] n = len(nums) def backtrack(sum):原创 2022-04-11 20:38:30 · 71 阅读 · 0 评论