![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 61
Lkun_99
学生
展开
-
算法常见技巧
算法技巧1、回溯算法(1)全排列public List<List<Integer>> permute(int[] nums) { int len; if(nums == null || (len = nums.length) == 0){ return null; } // 这里面是结果,没什么好介绍的 List<List<Integer>> ans = new LinkedList<>(); // 这里是路径原创 2021-09-15 14:20:15 · 369 阅读 · 0 评论 -
可移除字符的最大数目
二分错题1898. 可移除字符的最大数目难度中等12给你两个字符串 s 和 p ,其中 p 是 s 的一个 子序列 。同时,给你一个元素 互不相同 且下标 从 0 开始 计数的整数数组 removable ,该数组是 s 中下标的一个子集(s 的下标也 从 0 开始 计数)。请你找出一个整数 k(0 <= k <= removable.length),选出 removable 中的 前 k 个下标,然后从 s 中移除这些下标对应的 k 个字符。整数 k 需满足:在执行完上述步骤后, p原创 2021-09-15 14:16:38 · 166 阅读 · 0 评论 -
动态规划lc题
动态规划746. 使用最小花费爬楼梯难度简单数组的每个索引作为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i](索引从0开始)。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从cost[1]开始,然后走两步即可到阶梯顶,一共花费15。示例 2:原创 2021-09-15 14:15:41 · 561 阅读 · 0 评论 -
DFS常见算法
DFS78. 子集难度中等1101给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]]提示:1 <= nums.length <= 10-10 <= nums[i] <原创 2021-09-15 14:14:52 · 406 阅读 · 0 评论 -
KMP算法
KMP算法1、相关知识主串:需要匹配的字符串模式串:去匹配的字符串前缀:包括起点不包括终点的字符串后缀:不包括起点包括终点的字符串next数组:主串和模式串不匹配的时候,模式串回退的位置next[j]: 以j结尾的后缀和以1开始的前缀相同字符的个数2、求next数组模板们定义char[] chs数组从0开始,chs[1] = 0private void getNext(char[] chs, int[] next,int n){ for(int i = 2原创 2021-09-15 14:12:28 · 53 阅读 · 0 评论