算法-目录

a=float(“inf”)无穷大
abs()绝对值

数组

NC140 排序
1、冒泡排序(Bubble Sort)
2、选择排序(Selection Sort)
3、插入排序(Insertion Sort)
4、希尔排序(Shell Sort)
5、归并排序(Merge Sort)
6、快速排序(Quick Sort)
7、堆排序(Heap Sort)
8、计数排序(Counting Sort)
BM53 缺失的第一个正整数

continue
range

BM89 合并区间

①arr.sort(key=lambda x:x.start)
②for i in arr[1:]:

26. 删除有序数组中的重复项
16. 最接近的三数之和
11. 盛最多水的容器
NC22 合并两个有序的数组
367. 有效的完全平方数
59. 螺旋矩阵 II

二分、排序

704. 二分查找
BM18 二维数组中的查找
35. 搜索插入位置 二分[K]
(同上)剑指 Offer II 068. 查找插入位置
34. 在排序数组中查找元素的第一个和最后一个位置
69. x 的平方根 二分查找法、公式法
BM21 旋转数组的最小数字
162. 寻找峰值
165. 比较版本号

①for x in zip_longest(version1.split(‘.’),fillvalue=0):
i,j=int(x),int(y)
②i1 = int(nums1[i]) if i < n1 else 0
③ord(version1[i])-ord(‘0’)

哈希表

3. 无重复字符的最长子串 滑动窗口 、双指针、哈希表+双指针、暴力解

lookup=set()

剑指 Offer II 004. 只出现一次的数字

dic={}
for item in nums:
dic[item]=dic.get(item,0)+1 #计数
for k in dic.keys():
if dic[k]==1:
return k

(同上)BM52 数组中只出现一次的两个数字
(同上)NC73 数组中出现次数超过一半的数字

dic={}

242. 有效的字母异位词
383. 赎金信
349. 两个数组的交集
202. 快乐数
454. 四数相加 II
1. 两数之和

链表

链表是一个包含零个或多个元素的数据结构。

定义
class ListNode:
    def __init__(self, val, next=None):
        self.val = val #节点上存储的元素
        self.next = next #指向下一个节点的指针

反转链表
图片来自https://blog.csdn.net/qq_42274068/article/details/104133073

2. 两数相加 递归、迭代
15. 三数之和 双指针、链表法
18. 四数之和 双指针
27. 移除元素
707. 设计链表
206. 反转链表 双指针迭代、递归[K]
(同上)剑指 Offer II 024. 反转链表
92. 反转链表 II
BM3 链表中的节点每k个一组翻转
24. 两两交换链表中的节点 递归[K]、非递归
BM14 链表的奇偶重排 切片
剑指 Offer 25. 合并两个排序的链表
剑指 Offer II 078. 合并k个排序链表
1669. 合并两个链表
203. 移除链表元素
19. 删除链表的倒数第 N 个结 双指针、计算链表长度
剑指 Offer 22. 链表中倒数第k个节点 顺序查找、双指针
面试题 02.02. 返回倒数第 k 个节点
BM8 链表中倒数最后k个结点
面试题 02.07. 链表相交
141. 环形链表
142. 环形链表 II 快慢指针、哈希表

字符串

344. 反转字符串 双指针

①str1.append(str[len(str)-i-1])
return ‘’.join(str1)

541. 反转字符串II
剑指 Offer 05. 替换空格 遍历
151. 颠倒字符串中的单词 使用语言特性
剑指 Offer 58 - II. 左旋转字符串 字符串切片[K]、列表遍历拼接、字符串遍历拼接
28. 实现 strStr() KMP[K]、调函数
BM86 大数加法

mlen = max(len(s), len(t)) # 取两者长度的最大值
# 在两个数字字符串的前面补0 比如’1’.zfill(3)=‘001’
s = s.zfill(mlen)

range( start, end, step),其中start为闭,end为开,正数为正方向(向后遍历)步长。
range(len-1,-1,-1)代表起点是数组最后一个元素,终点是数组第一个元素,每次往前遍历一个元素。

res += str((ord(s[i]) + ord(t[i]) - 96+ carry)%10)

chr的功能与ord函数刚好相反
chr(97)
‘a’
ord(‘a’)
97

return res[::-1] # 最后将res反过来输出

剑指 Offer II 020. 回文子字符串的个数
9. 回文数

s = str(x)
length = len(s)

栈和队列

232. 用栈实现队列
225. 用队列实现栈
20. 有效的括号 栈[K]、栈+字典
1047. 删除字符串中的所有相邻重复项
剑指 Offer 59 - I. 滑动窗口的最大值 切片、双端队列

二叉树

144. 二叉树的前序遍历 递归、迭代、Morris 遍历[K]
94. 二叉树的中序遍历 迭代、Morris 遍历
145. 二叉树的后序遍历 迭代

回溯

77. 组合
剑指 Offer II 083. 没有重复元素集合的全排列 回溯&深搜

图与搜索

997. 找到小镇的法官
1791. 找出星型图的中心节点
133. 克隆图 深搜dfs、广搜bfs
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值