05 2023 档案
摘要:题目: 思路: 【1】动态规划 示例输入数组{3,1,7,3} 纵坐标代表数组的下标,横坐标代表目标值的数值 [ [false, false, false, false, false, false, false, false], [false, false, false, false, false,
阅读全文
摘要:题目: 思路: 【1】存储后缀 【2】利用字典树(从后缀开始存储) 代码展示: 字典树优化的两个版本: //时间6 ms击败99.24% //内存47 MB击败29.35% class Solution { class TrieNode{ TrieNode[] childs=new TrieNode
阅读全文
摘要:题目: 思路: 【1】动态规划 代码展示: 动态规划: //时间30 ms击败45.38% //内存47.4 MB击败11.31% //时间复杂度:O(n^2),其中 n 是字符串 s 的长度。预处理计算 g 和动态规划计算 f 的时间复杂度均为 O(n^2)。 //空间复杂度:O(n^2),数组
阅读全文
摘要:题目: 思路: 【1】利用二进制特性,双循环迭代 【2】利用树特性,进行检索 代码展示: 【1】利用二进制特性,双循环迭代: //时间1 ms击败29.10% //内存40.7 MB击败98.77% //时间复杂度:O(n×2^n)。一共 2^n 个状态,每种状态需要 O(n) 的时间来构造子集。
阅读全文
摘要:题目: 思路: 【1】动态规划的方式 代码展示: 动态规划的方式(一维数组): //利用两个一维数组轮流交替达到二维数组的效果 //时间4 ms击败86.35% //内存42.6 MB击败80.32% class Solution { public int numDistinct(String s,
阅读全文
摘要:题目: 思路: 【1】递归的方式(深度搜索) 代码展示: //时间1 ms击败28.91% //内存45 MB击败5.9% /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode
阅读全文
摘要:题目: 思路: 【1】用双指针达到滑动窗口的效果(其实可以说等价于 763. 划分字母区间) 代码展示: 用双指针达到滑动窗口的效果: //时间2 ms击败99.4% //内存42.9 MB击败6.50% class Solution { public String minWindow(String
阅读全文
摘要:题目: 思路: 【1】广度优先搜索 + 优化建图的方式 【2】双向广度优先搜索的方式 代码展示: 双向广度优先搜索的方式: //时间23 ms击败89.26% //内存53.1 MB击败5.18% //时间复杂度:O(N×C^2)。其中 N 为 wordList 的长度,C 为列表中单词的长度。 /
阅读全文
摘要:题目: 思路: 【0】这道题重点在于理解题目,要求的不是words数组内的每个字符串内部是有序的,而是两两字符串进行比较 示例1: 参数: words = ["hello","leetcode"], order = "hlabcdefgijkmnopqrstuvwxyz" 分析: 先按照order给
阅读全文
摘要:题目: 思路: 【1】拓扑排序 + 深度优先搜索 【2】拓扑排序 + 广度优先搜索 代码展示: 拓扑排序 + 广度优先搜索 //时间2 ms击败99.58% //内存40 MB击败44.88% 思路: 1、先标记所有出现过的字母,没出现过的字母不要在答案中出现; 2、正向建图(存储某个字母的儿子):
阅读全文