随笔分类 - 数据结构与算法
摘要:一个元素每次90度旋转,旋转4次后回到原点,这样我们找出这四个点的坐标一切就简单了
阅读全文
摘要:
把所有重复出现的位置进行标记,然后再遍历一遍数组,即可找到没有出现过的数字。进一步优化,可以直接对原数组进行标记:把重复出现的数字在原数组出现的位置设为负数,最后仍然为正数的位置即为没有出现过的数。
阅读全文
把所有重复出现的位置进行标记,然后再遍历一遍数组,即可找到没有出现过的数字。进一步优化,可以直接对原数组进行标记:把重复出现的数字在原数组出现的位置设为负数,最后仍然为正数的位置即为没有出现过的数。
阅读全文
摘要:
进制转换类的题,通常是利用除法和取模来进行计算,同时也要注意一些细节,如负数和零。如果输出是数字类型而非字符串,则也需要考虑是否会超出整数上下界。
阅读全文
进制转换类的题,通常是利用除法和取模来进行计算,同时也要注意一些细节,如负数和零。如果输出是数字类型而非字符串,则也需要考虑是否会超出整数上下界。
阅读全文
摘要:
输入一个整数,输出也是一个整数,表示小于输入数的质数的个数。 埃拉托斯特尼筛法,是判断一个整数是否是质数的方法。并且它可以在判断一个整数n时,同时判断所小于n的整数,因此非常适合这个问题。
阅读全文
输入一个整数,输出也是一个整数,表示小于输入数的质数的个数。 埃拉托斯特尼筛法,是判断一个整数是否是质数的方法。并且它可以在判断一个整数n时,同时判断所小于n的整数,因此非常适合这个问题。
阅读全文
摘要:
最多只有一次修改某个数字的机会,问能否将数组变为非递减数组。
阅读全文
最多只有一次修改某个数字的机会,问能否将数组变为非递减数组。
阅读全文
摘要:
这题先要理解题,一个无序数组,数组中每个元素有两个属性,一个表示身高,一个表示前面有几个人和他一样高或更高。现在要把这个数组按其属性排列正确。
阅读全文
这题先要理解题,一个无序数组,数组中每个元素有两个属性,一个表示身高,一个表示前面有几个人和他一样高或更高。现在要把这个数组按其属性排列正确。
阅读全文
摘要:
每天可以无限次买卖,但是只能持有一支股票。想有最大利润,就得低价买高价卖。如果第二天价格比当前价格高,我们就卖出,把差价加入利润中。若后天价格更高,我们还可以在第二天卖出后再买入。以此类推,遍历完整个数组后即可获得最大利润。
阅读全文
每天可以无限次买卖,但是只能持有一支股票。想有最大利润,就得低价买高价卖。如果第二天价格比当前价格高,我们就卖出,把差价加入利润中。若后天价格更高,我们还可以在第二天卖出后再买入。以此类推,遍历完整个数组后即可获得最大利润。
阅读全文
摘要:
一个字符串S,将其尽可能多的分割为子字符串,条件是每种字符最多只能出现在一个子串中。上面的示例中,字符串S中有多个a,这些a必须只能在第一个子串中,字母e出现在第二个子串中。这道题难点就是如何找到字符串的断点,即拆分成为子串的位置。
阅读全文
一个字符串S,将其尽可能多的分割为子字符串,条件是每种字符最多只能出现在一个子串中。上面的示例中,字符串S中有多个a,这些a必须只能在第一个子串中,字母e出现在第二个子串中。这道题难点就是如何找到字符串的断点,即拆分成为子串的位置。
阅读全文
摘要:
区间重叠问题,一般都要想到贪心(局部最优等于全局最优)
阅读全文
区间重叠问题,一般都要想到贪心(局部最优等于全局最优)
阅读全文
摘要:
实现:遍历数组,判断当前元素、左侧和右侧都为0就可以种花,可种植花数加1,并将当前元素置为2,防止影响下一元素判断。当可种值花数大于n返回true。
阅读全文
实现:遍历数组,判断当前元素、左侧和右侧都为0就可以种花,可种植花数加1,并将当前元素置为2,防止影响下一元素判断。当可种值花数大于n返回true。
阅读全文
摘要:
求最小的移除区间个数,等价于尽量多保留不重叠的区间。在选择要保留区间时,区间的结尾十分重要:选择的区间结尾越小,余留给其它区间的空间就越大,就越能保留更多的区间。因此我们采取的贪心策略为:优先保留结尾小且不相交的区间。
阅读全文
求最小的移除区间个数,等价于尽量多保留不重叠的区间。在选择要保留区间时,区间的结尾十分重要:选择的区间结尾越小,余留给其它区间的空间就越大,就越能保留更多的区间。因此我们采取的贪心策略为:优先保留结尾小且不相交的区间。
阅读全文
摘要:
通过两次遍历,分配的糖果就可以满足题目要求了。这里的贪心策略即为,在每次遍历中,只考虑并更新相邻一侧的大小关系。
阅读全文
通过两次遍历,分配的糖果就可以满足题目要求了。这里的贪心策略即为,在每次遍历中,只考虑并更新相邻一侧的大小关系。
阅读全文
摘要:
使用贪心策略是,给剩余孩子里最小饥饿度的孩子分配最小的能饱腹的饼干。
阅读全文
使用贪心策略是,给剩余孩子里最小饥饿度的孩子分配最小的能饱腹的饼干。
阅读全文
摘要:
分治+动态规划,dp[i][j] = maxCoins(nums[i]~nums[j]) 表示从第i个气球到第j个气球的最大值,我们所求答案就是ans = dp[1][n]。
阅读全文
分治+动态规划,dp[i][j] = maxCoins(nums[i]~nums[j]) 表示从第i个气球到第j个气球的最大值,我们所求答案就是ans = dp[1][n]。
阅读全文
摘要:
leetcode 932. Beautiful Array 漂亮数组(中等)
阅读全文
leetcode 932. Beautiful Array 漂亮数组(中等)
阅读全文
摘要:实际上就可以变成 () ? () 这种形式,两个括号内分别是各自的表达式,最终会分别计算得到两个整型数组,中间的问号表示运算符,可以是加,减,或乘。
阅读全文
摘要:定义一个max保存遍历过程中出现的最大子数组和,也是返回结果,定义一个dp[i],用来表示以第i个元素为结尾的数组的最大数组和。
阅读全文
摘要:定义一个二维数组dp,其中dp[i][j]表示字符串s的子串s[0, i]是否可以被字符串p的子串p[0,j]匹配,根据正则表达式的不同情况,即星号、点号、非星号点号的字符,我们可以分情况讨论来更新dp数组。
阅读全文
摘要:使用一个二维数组dp[i][j],表示将第一个字符串到位置i为止,和第二个字符串到位置j为止,最多需要几步编辑。
阅读全文
摘要:遍历一次数组,在每个位置i时,记录i位置之前所有价格中的最低价格,然后将当前价格作为售出价格,查看当前收益是不是最大收益即可。
阅读全文

浙公网安备 33010602011771号