上一页 1 2 3 4 5 6 ··· 31 下一页
摘要: 思路1:双指针。每次贪心的匹配,如果匹配成功则同时右移。 ☆☆☆思路2:动态规划。 代码1: class Solution { public boolean isSubsequence(String s, String t) { // 时间复杂度: O(n+m) 空间复杂度:O(1) int si 阅读全文
posted @ 2021-01-13 11:12 不学无墅_NKer 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 思路:排序 + 贪心算法 每次拿最大的饼干与最贪心的小朋友进行比较,如果满足,则可以让其满足;否则,继续找下一个小朋友。 由于贪心算法通常每一次操作都需要取最大值或最小值,因此需要对数组排序。 class Solution { public int findContentChildren(int[] 阅读全文
posted @ 2021-01-12 21:40 不学无墅_NKer 阅读(65) 评论(0) 推荐(0) 编辑
摘要: ☆☆☆☆思路:哈希表。参考 官方题解 class Solution { public int longestConsecutive(int[] nums) { Set<Integer> set = new HashSet<>(); for (int num : nums) { set.add(num 阅读全文
posted @ 2021-01-12 16:59 不学无墅_NKer 阅读(75) 评论(0) 推荐(0) 编辑
摘要: class Solution { /** * 最优子结构:在i处递减的摆动序列的总长度,就是在i之前以递增结尾的最长摆动序列长度 +1; * 状态定义:up[i] 表示以前 i 个元素中的某一个为结尾的最长的 上升摆动序列 的长度 * down[i] 表示以前 i 个元素中的某一个为结尾的最长的 下 阅读全文
posted @ 2021-01-12 11:15 不学无墅_NKer 阅读(63) 评论(0) 推荐(0) 编辑
摘要: ☆☆☆☆思路:Longest Common Sequence (LCS) 问题。要对两个字符串进行扫描,因此需要两个维度进行动态规划。 1. 状态的定义:dp[m][n] 表示 S1[0...m] 和 S2[0...n] 的最长公共子序列的长度。 2. 状态转移:每次对最新需要考虑的字符,s1[m] 阅读全文
posted @ 2021-01-11 20:19 不学无墅_NKer 阅读(128) 评论(0) 推荐(0) 编辑
摘要: class Solution { public int findLengthOfLCIS(int[] nums) { if (nums == null || nums.length == 0) return 0; int res = 1; int len = 1; for (int i = 1; i 阅读全文
posted @ 2021-01-10 19:06 不学无墅_NKer 阅读(71) 评论(0) 推荐(0) 编辑
摘要: ☆☆☆☆思路:本题是经典的LIS问题。两种解法,动态规划 和 二分查找。 方法1:动态规划。时间复杂度为O(n^2) 方法2:二分查找,时间复杂度为O(nlogn) 【举一反三】: (1)该题为不连续的情况,延伸求最长连续递增子序列长度,见LeetCode674. 最长连续递增序列 (2)除了要会求 阅读全文
posted @ 2021-01-04 21:22 不学无墅_NKer 阅读(161) 评论(0) 推荐(0) 编辑
摘要: ☆☆☆☆思路:把所有符号为正的数总和设为一个背包的容量,容量为x;把所有符号为负的数总和设为一个背包的容量,容量为y。 令sum为数组的总和,则x+y = sum。而两个背包的差为S,则x-y=S。从而求得x=(S+sum)/2。 因此,题目转换为0-1背包问题:给定一个数组和一个容量为x的背包,求 阅读全文
posted @ 2021-01-03 22:09 不学无墅_NKer 阅读(40) 评论(0) 推荐(0) 编辑
摘要: class Solution { /** * 举个例子: * dp["onetwothreefour"] = dp["onetwothree"这一段] && 判断一下"four" */ public boolean wordBreak(String s, List<String> wordDict) 阅读全文
posted @ 2021-01-03 21:35 不学无墅_NKer 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 题目解释:用 m 个0 和 n 个1,最多可以组成数组中的多少个01串? 示例2之所以不能是 “10”,原因是虽然1个0和1个1可以组成“10”,但只组成了数组中的1个元素,不是最大的。 ☆☆☆☆思路:本题是二维的0-1背包问题,把总共的 0 和 1 的个数视为背包的容量 0-1背包,即数组中的元素 阅读全文
posted @ 2021-01-03 20:57 不学无墅_NKer 阅读(75) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 31 下一页