Day 76 547. 省份数量 547. 省份数量题目123456789101112131415161718192021222324252627282930313233343536有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 is 2021-11-24 91-day-algorithm #UnionFind
Day 75 面试题 17.17. 多次搜索 面试题 17.17. 多次搜索题目123456789101112131415161718192021给定一个较长字符串big和一个包含较短字符串的数组smalls,设计一个方法,根据smalls中的每一个较短字符串,对big进行搜索。输出smalls中的字符串在big里出现的所有位置positions,其中positions[i]为smalls[i]出现的所有位置。示例:输入:big = &quo 2021-11-23 91-day-algorithm #Trie
Day 74 677. 键值映射 677. 键值映射题目123456789101112131415161718192021222324252627282930313233实现一个 MapSum 类,支持两个方法,insert 和 sum:MapSum() 初始化 MapSum 对象void insert(String key, int val) 插入 key-val 键值对,字符串表示键 key ,整数表示值 val 。如果键 k 2021-11-22 91-day-algorithm #Trie
Day 73 208. 实现 Trie (前缀树) 208. 实现 Trie (前缀树)题目1234567891011121314151617181920212223242526272829303132333435363738Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现 Trie 类:Trie() 初始 2021-11-21 91-day-algorithm #Trie
Day 72 78. 子集 78. 子集题目123456789101112131415161718192021给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0 2021-11-20 91-day-algorithm #traceback
Day 71 260. 只出现一次的数字 III 260. 只出现一次的数字 III题目1234567891011121314151617181920212223242526给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现? 示例 1:输入:nums = [1,2,1,3,2,5]输出 2021-11-19 91-day-algorithm #Partition
Day 70 932. 漂亮数组 932. 漂亮数组题目12345678910111213141516171819202122232425对于某些固定的 N,如果数组 A 是整数 1, 2, ..., N 组成的排列,使得:对于每个 i < j,都不存在 k 满足 i < k < j 使得 A[k] * 2 = A[i] + A[j]。那么数组 A 是漂亮数组。 给定 N,返回任意漂亮数组 A(保证存在一个)。 2021-11-17 91-day-algorithm #Partition
Day 69 23. 合并K个升序链表 23. 合并K个升序链表题目123456789101112131415161718192021222324252627282930313233343536给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1 2021-11-17 91-day-algorithm #merge_sort
Day 68 96. 不同的二叉搜索树 96. 不同的二叉搜索树题目12345678910111213141516171819202122给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。示例 1:输入:n = 3输出:5示例 2:输入:n = 1输出:1提示:1 <= n <= 19 题目思路 1、本题采用动态规划求解子问题,其中 dp[ 2021-11-16 91-day-algorithm #DP
Day 67 881. 救生艇 881. 救生艇题目123456789101112131415161718192021222324252627第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit。每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。返回载到每一个人所需的最小船数。(保证每个人都能被船载)。 示例 1:输入:people = [1,2], limit = 3输出:1解释: 2021-11-15 91-day-algorithm #Greed #quick sort
Day 66 435. 无重叠区间 435. 无重叠区间题目1234567891011121314151617181920212223242526272829给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移 2021-11-14 91-day-algorithm #Greed
Day 65 455. 分发饼干 455. 分发饼干题目1234567891011121314151617181920212223242526272829303132333435363738假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[ 2021-11-13 91-day-algorithm #Greed
Day 64 518. 零钱兑换 II 518. 零钱兑换 II题目123456789101112131415161718192021222324252627282930313233343536给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带符号 2021-11-12 91-day-algorithm #NP
Day 63 322. 零钱兑换 322. 零钱兑换题目123456789101112131415161718192021222324252627282930313233343536给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以认为每种硬币的数量是无限的。 示例 1:输入:co 2021-11-11 91-day-algorithm #NP
Day 62 494. 目标和 494. 目标和题目12345678910111213141516171819202122给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1:输入:nums = [1,5,11,5]输出:true解释:数组可以分割成 [1, 5, 5] 和 [11] 。示例 2:输入:nums = [1,2,3,5]输出:false解 2021-11-10 91-day-algorithm #NP
Day 61 416. 分割等和子集 416. 分割等和子集题目12345678910111213141516171819202122给你一个只包含正整数的非空数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1:输入:nums = [1,5,11,5]输出:true解释:数组可以分割成 [1, 5, 5] 和 [11] 。示例 2:输入:nums = [1,2,3,5]输出:false解释 2021-11-09 91-day-algorithm #NP
Day 60 464. 我能赢吗 464. 我能赢吗题目123456789101112131415161718192021222324252627在 "100 game" 这个游戏中,两名玩家轮流选择从 1 到 10 的任意整数,累计整数和,先使得累计整数和达到或超过 100 的玩家,即为胜者。如果我们将游戏规则改为 “玩家不能重复使用整数” 呢?例如,两个玩家可以轮流从公共整数池中抽取从 1 到 15 的整数 2021-11-08 91-day-algorithm #DP
Day 59 688. “马”在棋盘上的概率 688. “马”在棋盘上的概率题目12345678910111213141516171819202122232425262728293031323334已知一个 NxN 的国际象棋棋盘,棋盘的行号和列号都是从 0 开始。即最左上角的格子记为 (0, 0),最右下角的记为 (N-1, N-1)。 现有一个 “马”(也译作 “骑士”)位于 (r, c) ,并打算进行 K 次移动。 如下图所示,国际象棋 2021-11-07 91-day-algorithm #DP
Day 58 62. 不同路径 62. 不同路径题目1234567891011121314151617181920212223242526272829303132333435363738一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径? 示例 1:输入:m = 3 2021-11-06 91-day-algorithm #DP
Day 57 1143. 最长公共子序列 1143. 最长公共子序列题目1234567891011121314151617181920212223242526272829303132333435给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符后组成的新字符串。例 2021-11-05 91-day-algorithm #DP