随笔分类 - 题解
摘要:滑动窗口 时间复杂度 算法的时间复杂度是 O(N),其中 N 是输入字符串/数组的长度。 为什么呢?简单说,字符串/数组中的每个元素都只会进入窗口一次,然后被移出窗口一次,不会说有某些元素多次进入和离开窗口,所以算法的时间复杂度就和字符串/数组的长度成正比。 大致逻辑 int left = 0, r
阅读全文
摘要:剪邮票 题目: 如【图1.jpg】, 有12张连在一起的12生肖的邮票。 现在你要从中剪下 55 张来,要求必须是连着的。 (仅仅连接一个角不算相连) 比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。 请你计算,一共有多少种不同的剪取方法。 知识点: 全排列+去重 DFS
阅读全文
摘要:P2249 【深基13.例1】查找 传送门 注意点: Java没有算法库,需要手写二分。 输入输出次数过多,不能用Scanner类来读取,读取的太慢了会导致超时并且内存超限,应该要用快读快输,不过这道题不要快输也行,所以必须记住快读数字,快读字符串,和快输的模板。 注意防止数组下标越界 import
阅读全文
摘要:有序数组中的单一元素 传送门 方法一:全数组的二分查找 思路: 假设只出现一次的元素位于下标 x,由于其余每个元素都出现两次,因此下标 x 的左边和右边都有偶数个元素,数组的长度是奇数。 由于数组是有序的,因此数组中相同的元素一定相邻。对于下标 x 左边的下标 y,如果 $\textit{nums}
阅读全文
摘要:最长公共子序列类问题 最长公共子序列 最长公共子序列 给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。如果不存在公共子序列,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)
阅读全文
摘要:最长递增子序列 最长递增子序列 传送门 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 动态规划解法 1、确定 base
阅读全文
摘要:零钱兑换 [传送门]( 322. 零钱兑换 - 力扣(LeetCode) ) 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数
阅读全文
摘要:编辑距离 [传送门]( 72. 编辑距离 - 力扣(LeetCode) ) 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 一、思路 编辑距离问题就是给我们两个
阅读全文