08 2020 档案

摘要:Leetcode题目 给你一个 m * n 的矩阵 mat,以及一个整数 k ,矩阵中的每一行都以非递减的顺序排列。 你可以从每一行中选出 1 个元素形成一个数组。返回所有可能数组中的第 k 个 最小 数组和。 示例 1: 输入:mat = [[1,3,11],[2,4,6]], k = 5输出:7 阅读全文
posted @ 2020-08-28 22:14 扁鹊小脑 阅读(290) 评论(0) 推荐(0)
摘要:之前听到室友提到过并查集,是一种数据结构,当时也不忙着找工作,所以也没去了解。 最近开始准备笔试了,感觉到了自身的菜,这不又遇到并查集了。赶忙去Google了一把。先是看leetcode对于并查集的解释。哦 “是一种树型的数据结构”,“用于处理一些不交集的合并以及查询问题。。”巴拉巴拉一大顿。 我天 阅读全文
posted @ 2020-08-26 22:32 扁鹊小脑 阅读(226) 评论(0) 推荐(0)
摘要:幂集:集合中所有可能的元素组合,包括空集对于任意一个子集,集合中的元素只有两种状态,在这个子集中或者不在这个子集中,因此我们可以用二叉树来表示这种状态左子树代表保留该元素,右子树代表舍弃该元素如 集合 [1,3,4] [] 1 [] 1,3 1 3 [] 1,3,4 1,3 1,4 1 3,4 3 阅读全文
posted @ 2020-08-25 18:28 扁鹊小脑 阅读(1056) 评论(0) 推荐(0)
摘要:问题定义:求最大回文子串 相对暴力点的中心扩展算法理解起来很容易,就是依次遍历字符串,每个字符作为中心点向外扩展 这个马拉车算法其实就是在中心扩展算法上进行的改进,我们在用中心扩展算法判断以每个字符为中心的最长回文时,需要对每个字符两端分别开始扩展,依次判断,时间复杂度为O(N2),那么如何优化呢? 阅读全文
posted @ 2020-08-23 15:39 扁鹊小脑 阅读(210) 评论(0) 推荐(0)
摘要:问题定义:国际象棋中,皇后可以直线进攻也可以斜线进攻,问在NxN的国际象棋棋盘上摆N个皇后,问摆使得N个皇后之间无法相互进攻有多少种摆法? 通过回溯法解决。 def isValid(matrix,row,col): n = len(matrix) for i in range(row): for j 阅读全文
posted @ 2020-08-22 22:19 扁鹊小脑 阅读(234) 评论(0) 推荐(0)
摘要:最大升序子序列:给定数组 [1,7,3,5,9,4,8],则该数组的最大升序子序列为 1,3,5,9,不要求连续。 dp[i]存储第i个位置时,最大升序子序列的长度。 状态转移方程:dp[i] = dp[j] + 1 , dp[j] = max(dp[0,i-1]) 初始状态dp[i]=1 求解最大 阅读全文
posted @ 2020-08-18 18:38 扁鹊小脑 阅读(707) 评论(0) 推荐(0)
摘要:俄罗斯农名乘法是一种计算乘法的方法: 计算方法:将第一个乘子x2,第二个乘子除2,直到第二个乘子为1为止。如下面的例子所示,将第二个乘子为奇数的行中的第一个乘子相加即为最终的乘积结果。 例如: epoch0:14 x 25 epoch1:28 x 12 epoch2:56 x 6 epoch3:11 阅读全文
posted @ 2020-08-15 20:40 扁鹊小脑 阅读(863) 评论(0) 推荐(0)
摘要:堆是一种二叉树结构 大顶堆:任一父节点比子节点大 小顶堆:父节点比任一子节点小 堆的建立过程即使大/小顶堆的构建过程,给定一个数组,首先初始化,再进行堆的调整 建立大顶堆: def buildMaxHeap(arr): length = len(arr) for i in range(length/ 阅读全文
posted @ 2020-08-12 15:18 扁鹊小脑 阅读(171) 评论(0) 推荐(0)
摘要:# 不考虑重复元素的情况 def permutation(self,arr): res = [] def dfs(arr,s,e): if s==e: res.append(str(arr)) else: for i in range(s,e+1): arr[s],arr[i] = arr[i],a 阅读全文
posted @ 2020-08-05 17:30 扁鹊小脑 阅读(288) 评论(0) 推荐(0)