随笔分类 - 数组/STR
摘要:本题求两个数组求中位数,并且要求Log复杂度,那么必然用到二分法,我们就要考虑怎么比较; 1. 本题使用求两数组中第k小元素的辅助函数,使得,sumLens=7 时返回 get_k(4) , sumLens=8 时返回 get_k(4) ,get_k(5) ,由此可知,目前为止我们对于get_k的传
阅读全文
摘要:思路: 1. 就是一个数学问题,需要明确绳子每段长度为3时取得最大乘积。 2. 此外,有几种特殊情况: 1) 绳子必须要分段,所以在 n = 2 -> 1,1 n=3 -> 2,1 2) 余数是1的时候, 2*2>3*1 所以要分为2*2
阅读全文
摘要:原地修改S: 1. 这里要注意的是,每次修改完s后,s的长度要+=2,并且i的指针最好+=3,节省时间
阅读全文
摘要:思路: 1. 如果从 (0,0)来看待矩阵,发现是 row col方向都递增,无法利用到该条件 2. 但是如果从 (-1,0)来看,则是 row方向小,col方向大,就可以比较和target的大小,比其小,则col+=1,比其大,则row+=1
阅读全文
摘要:收获: 1. 本题是比较两个列表, 两个列表长度未知,我原本是想分为两步来比较,第一个部分比较 Min(len1,len2)的数组,再比较长数组剩余部分与0的大小 2. 可官方题解提供了直接比较的思路,对元素1,元素2赋值,有则有,无则0: for i in range(max(n1,n2)): i
阅读全文
摘要:思路:空间换时间 难点: 1. 用27个列表当作27个行列boxes 2. box的取法 boxNum = (row//3)*3 + col//3
阅读全文
摘要:1. 交换两数 2. 颠倒部分数组 倒序遍历两次,第一次找升序 nums[i] < nums[i+1]; 第二次找大于nums[ i ] 的第一个数 颠倒 nums[i+1:]
阅读全文
摘要:与 螺旋数组 中的三题一样,都是属于改变方向遍历数组.
阅读全文
摘要:题目理解: 找出 1 - len(nums) 中缺失的第一个数,所以需要排序; 要求时间O(n)空间O(1) 思路: 1. 遍历一遍,对于数值在 1- len(nums)中的数值,并且那个位置还没有对应元素, if 1 <= nums【i】<= len(nums) and nums[i] != i-
阅读全文
摘要:https://mp.weixin.qq.com/s?__biz=MzI0OTQwMTA5Ng==&mid=2247483819&idx=1&sn=071731261441f702f429ae9fc1b98b84&chksm=e9935bccdee4d2da68f0a62830c23daba65fe
阅读全文
摘要:https://leetcode-cn.com/problems/house-robber/ 题目求数组非连续元素的最大和,状态转移方程为: dp[n] = max(dp[n-1],dp[n-2] + num) 所以本题只更新两个变量 , dp[n-2] , dp[n-1] 为Fst Sec
阅读全文
摘要:https://leetcode-cn.com/problems/maximum-subarray/ 用DP,不断更新全局最大值与当前最大值
阅读全文
摘要:给定一个无序的整数数组,找到其中最长上升子序列的长度。 总结一下本题与279.完全平方数中的的动态规划用法: 拿dp[ 10 ]的推演途径来举例 279: 从 10 - 1,10 - 4,10 - 9 中取最大值 dp[ 10 ] = dp[ 9 ] + 1 dp[ 10 ] = dp[ 6 ] +
阅读全文
摘要:给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 初始思路: 给定一个数比如1300,1300下一步分解就有 int( 1300**(0.5) +1) 种选择,再下一步又有很多种选择,这样自顶向下的分解方法无疑
阅读全文
摘要:本题自己不会做,看的题解: (难点就是这个解题思路!) 1.遍历一遍 list ,保留两个指针,最小乘积和最大乘积,因为当前最大乘积一定在 curMax = max(curMax*item,curMin*item,item) 中 2. 设置 self.res, 每次遍历后都更新 self.res =
阅读全文
摘要:https://leetcode-cn.com/problems/house-robber-ii/ 思路: 1. 题目求数组非连续元素的最大和,状态转移方程为: dp[n] = max(dp[n-1],dp[n-2] + num) 2. 第二题要求 取了第0号num就不能要最后一项num,我就正反算
阅读全文
摘要:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 法1:暴力法,三层遍历,两层头节点尾节点,再用一层判断是否是回文 法2:动态规划,两层遍历,两层头节点尾节点,判断是否为回文可以直接访问 dp[i][j] , 这样就用 n^2的空间 换了 n的时间 本题我用的
阅读全文

浙公网安备 33010602011771号