1.组合数计算不溢出方法:https://programmercarl.com/0062.%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84.html#%E6%80%9D%E8%B7%AF

求组合的时候,要防止两个int相乘溢出! 所以不能把算式的分子都算出来,分母都算出来再做除法。

class Solution {
public:
    int uniquePaths(int m, int n) {
        long long numerator = 1; // 分子
        int denominator = m - 1; // 分母
        int count = m - 1;
        int t = m + n - 2;
        while (count--) {
            numerator *= (t--);
            while (denominator != 0 && numerator % denominator == 0) {
                numerator /= denominator;
                denominator--;
            }
        }
        return numerator;
    }
};

  

 

动态规划没写出来的题目(代码随想录):

(1)  96. 不同的二叉搜索树
(2) 1049. 最后一块石头的重量 II
(3) 494. 目标和
(4) 377. 组合总和 Ⅳ 【排序问题】
(5) 139.单词拆分
(6) 337. 打家劫舍 III 【树形dp】
(7) 123. 买卖股票的最佳时机 III 【初始化,当天买入当天卖出情况】
(8) 1035. 不相交的线 【需要get到其本质:最大重合子序列】
(9) 115.不同的子序列 【编辑距离的问题】
(10) 516.最长回文子序列
(11) 376. 摆动序列【波峰波谷问题】
(12) 132. 分割回文串 II
(13)673. 最长递增子序列的个数 【易错】

动态规划可以解决:(1)组合问题 (2)排序问题

 贪心算法没写出来的题目(代码随想录

 

145. 跳跃游戏 II 【细节出错】
(2)1005. K 次取反后最大化的数组和【简单的反而因为细节考虑不到】
(3)406. 根据身高重建队列【二维list 排序问题(其他常见的区间合并也是在贪心模块)】
(4)968. 监控二叉树 【树形贪心,树隔一个节点加一个标记的方法】
(5) 649. Dota2 参议院 https://programmercarl.com/0649.Dota2%E5%8F%82%E8%AE%AE%E9%99%A2.html#java

 

 回溯算法没写出来的题目(代码随想录):

(1)131.分割回文串 【转化成回溯问题】【分割问题->组合回溯问题】
(2)93. 复原 IP 地址 【同上】
(3) 332. 重新安排行程 【欧拉/图/DFS优化问题】
(4) 37. 解数独 (纯回溯问题)

 

图算法(代码随想录):

332. 重新安排行程 【一笔画问题、欧拉回路问题】
753. 破解保险箱 【一笔画问题、欧拉回路问题】
127. 单词接龙 【BFS vs DFS 选择】

 

二叉树(代码随想录):

(1)450. 删除二叉搜索树中的节点 【删除节点问题:直接return法】
(2)669. 修剪二叉搜索树
(2)前序/后序遍历(栈迭代实现)https://www.programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8%BF%AD%E4%BB%A3%E9%81%8D%E5%8E%86.html#%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86-%E8%BF%AD%E4%BB%A3%E6%B3%95
(3)116. 填充每个节点的下一个右侧节点指针 【巧思】
(4)968. 监控二叉树 【树形贪心,树隔一个节点加一个标记的方法】

 优先队列(堆)(代码随想录):

(1)剑指 Offer 59 - I. 滑动窗口的最大值 【实现nO(logn)的复杂度】
(2)347. 前 K 个高频元素

  字符串(代码随想录):

1)剑指Offer58-II.左旋转字符串 【看解析 主要看进阶的思路 整体翻转+局部翻转】
(2)28. 找出字符串中第一个匹配项的下标 KMP 字符串前缀和问题】 https://www.programmercarl.com/0028.%E5%AE%9E%E7%8E%B0strStr.html
3)459.重复的子字符串【KMP 字符串前缀和问题】
(4)209.长度最小的子数组 【滑动窗口-连续子串问题】
(5)59.螺旋矩阵II 【集合开闭】
(6)二分法的相关问题 【集合开闭】【https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html#%E6%80%9D%E8%B7%AF
(7)31. 下一个排列

双指针问题思路(代码随想录):

 巧思(代码随想录):

 并查集(代码随想录):

(1)684. 冗余连接
(2)685. 冗余连接 II

 二进制位运算(1的个数):https://programmercarl.com/1356.%E6%A0%B9%E6%8D%AE%E6%95%B0%E5%AD%97%E4%BA%8C%E8%BF%9B%E5%88%B6%E4%B8%8B1%E7%9A%84%E6%95%B0%E7%9B%AE%E6%8E%92%E5%BA%8F.html#c-%E4%BB%A3%E7%A0%81

python 负数除法/余数问题: https://blog.csdn.net/mmmmmpjih/article/details/123181326

 python dict字典排序方法:https://blog.csdn.net/m0_52733659/article/details/122814795

 常用的python 工具

#count() 函数的使用:
list=[1,1,1,1,1,1,1,2]
list.count(1) #7

#index() 查找元素index
list=[1,1,1,1,1,1,1,2]
list.index(1) #0

#map函数的用法:

>>> map(square, [1,2,3,4,5]) # 计算列表各个元素的平方
[1, 4, 9, 16, 25]
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]


#最大数,最小数
  float("inf") float("-inf")
 
  # sorted函数+lambda的使用
  list=sorted(list,key=lambda x:(x[1],x[0])) #(先用list的第二维从小到大,再用第一维从小到大)

 代码读入问题:https://blog.csdn.net/qq_23944915/article/details/109409079

---nolocal 变量的定义和说明 

 

 

 global nonlocal 和函数声明的顺序问题:

p=1      # global 的使用说明   
def aaa():
    global p  # global 的使用说明 
    print("aaaaaaaaa")
    print(p)
    p=10
    print(p)
    # bbb() #(bbb要想使用需要放在aaa函数声明的前面)
    
aaa()


def bbb():
    tmp=[10] 
    
    def ccc():
        nonlocal tmp # 不需要nonlocal的使用(可以使用 可以不使用)
        print(tmp)
    ccc()
bbb()