随笔分类 - 经典算法,抄就完了
摘要:区别: 转载:https://www.cnblogs.com/wpbing/archive/2018/07/26/9370304.html 实现: 树状数组: 转载:https://zhuanlan.zhihu.com/p/77182242 线段树: 转载:https://leetcode-cn.c
阅读全文
摘要:题目:https://leetcode-cn.com/problems/partition-equal-subset-sum/submissions/ 分割等和子集 利用: flag = flag | flag << i 记录所有的可能的结果 最后是一个非常非常长的01 bit串,比如第10位是1
阅读全文
摘要:链接:https://blog.csdn.net/bitcarmanlee/article/details/52719202 如果抽取1个的话 random.nextInt() % n == 0 判断随机数是否是 n的整数倍就可以实现
阅读全文
摘要:题目(连续的,区别于不连续的子序列) https://leetcode-cn.com/problems/maximum-subarray/ 动态规划 动态规划1(空间复杂度高) 使用二维数组 1. 初始化对角线 2. 计算距离为2的和 3. 计算距离为3的和 。。。 计算出右上角的值 程序: 动态规
阅读全文
摘要:与前两篇博客,最长回文子序列有点像 都是先求出长度为1,长度为2,长度为3.。。长度为n的子串是否为回文 然后动态规划 if(j + 1 < i + j - 1 && !dp[j+1][i+j-1]){ 这一句是如果有些是偶数的话 比如“bb”子串,要判断一下 程序
阅读全文
摘要:题目 https://leetcode-cn.com/problems/word-break/ 分析 1. 字符串S = {s1,s2,s3,s4...sn} 字典set = {S1,S2,S3....Sn} 2. 子问题划分 S = S1 + S2 S1 = S11 +S12 S2 = S21 +
阅读全文
摘要:一. leetcode题目链接 https://leetcode-cn.com/problems/longest-palindromic-subsequence/ 二. 动态规划 (1) 如果一个字符串S[0,1,2,3,,,n-1],S[0] == S[n-1]那么最大回文子序列就是 P(left
阅读全文
摘要:一. 题目描述: https://leetcode-cn.com/problems/longest-common-subsequence/ 二. 动态规划解法 例如:s1="abcde" s2= "ace",求两个字符串的公共子序列,答案是“ace” 1. S{s1,s2,s3....si} T{t
阅读全文
摘要:参考答案,特别鸣谢:https://leetcode-cn.com/problems/min-cost-climbing-stairs/solution/scala-dong-tai-gui-hua-di-gui-by-zx233/ 0. 题目描述 数组的每个索引做为一个阶梯,第 i个阶梯对应着一个
阅读全文
摘要:func sortList(head *ListNode) *ListNode { slist(head,nil) return head } func slist(head *ListNode,tail *ListNode){ if head == nil || head.Next == nil || head == tail{ return } pivot := head.Val i := h
阅读全文
摘要:一共两个函数 find() 查找根节点 union() 合并两个集合 根据树的高度合并两集合 定义一个rank[]数组,存储两个树的高度,比如rank[xroot] = 3 如果rank[xRoot] > rank{yRoot]的时候,就是x那个树比y那个树要高,所以合并的时候将y那个树的根节点给连
阅读全文
摘要:func quickSort(nums []int,left int,right int ){ if left < right { p := park(nums,left,right) quickSort(nums,left,p-1) quickSort(nums,p+1,right) } } func park(nums ...
阅读全文