01 2022 档案
摘要:题目链接 题目描述 字符串 s , 找出其中不含有重复字符的 最长子串 的长度。 思路 遍历字符串, 找到 每个字符为结尾的不含重复字符的最长子串, 其实就是一个队列(窗口), 比如 abcabcbb,进入这个队列(窗口)为 abc 满足题目要求,当再进入 a,队列变成了 abca, 这时候不满足要
阅读全文
摘要:题目链接 题目描述 给定一个二叉搜索树的根节点 root ,和一个整数 k , 查找其中第 k 个最小元素(从 1 开始计数)。 思路 二叉排序树的 中序遍历 是升序。 直接中序遍历呗,用个变量 记录 访问数据的个数, 好久不写递归遍历,不会写了.... C++代码 class Solution {
阅读全文
摘要:题目链接 题目描述 正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。 需要让组成和的完全平方数的个数最少。 返回和为n的完全平方数的 最少数量 。 思路 和 零钱兑换 一模一样 都是可以用完全背包的思想解决, 每个平方数值看作是 物品体积v[i],每个
阅读全文
摘要:题目链接 题目描述 数组 nums ,共 n 个整数。 132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成, 并满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。 如果 nums 中存在 132 模式的子序列 ,返回 tr
阅读全文
摘要:题目链接 题目描述 一个整数数组 coins ,表示不同面额的硬币; 以及一个整数 amount ,表示总金额。 计算可以凑成总金额所需的 最少的硬币个数 。 如果没有任何一种组合能组成总金额,返回 -1 。 每种硬币的数量是无限的。 样例 输入:coins = [1, 2, 5], amount
阅读全文
摘要:题目链接 题目描述 一个 只包含正整数 的 非空 数组 nums 。 判断是否可以将这个数组分割成两个子集 使得两个子集的元素和相等。 思路 01背包问题 若能分成两个和相等的子集,则总和一定是偶数。 把总和的一半看作背包的总体积 每个元素值,既是价值,又是该元素的体积。 若最后,背包最多能装下的体
阅读全文
摘要:题目链接 如题目 f[0] = 0 f[1] = 1 f[n] = f[n-1] + f[n-2] 要求 时间复杂度 O(logn) 思路 矩阵快速幂, 和快速幂一样,只是把乘数换成矩阵。 本题数据小,不需要取模 C++代码 class Solution { public: int fib(int
阅读全文
摘要:题目链接 题目描述 如题目 合并后的数组在 nums1 中,nums1初始长度为(m+n). 思路 双指针,分别指向nums1和nums2的开头 小的数记录进新数组ans, 对应的指针++. 其中一个指针到头后,把另一个数组剩余的数放新数组后边 (注意:a[i] = b[i++]的运算顺序.....
阅读全文
摘要:题目链接 题目描述 一个整数数组 nums ,找出一个具有最大和的连续子数组,返回其最大和。 思路 方法一:动态规划 用 f[i] 表示以 i 结尾的子数组的最大和。 则只需要求出每个位置的 f[i],然后返回 f 数组中的最大值即可。 如何求 f[i] ? 可以考虑 nums[i] 单独成为一段,
阅读全文
摘要:题目链接 题目描述 一个 n 个整数组成的数组 nums ,和一个目标值 K。 找出满足下述条件且不重复的四元组 nums[a] + nums[b] + nums[c] + nums[d] == K 思路 是三个数和为0的进阶版。 思路是一样的,知识多一层循环, 时间复杂度O(n^3)。 排序,方便
阅读全文
摘要:题目链接 题目描述 找出数组中,和为 K 的两个数的下标。 答案只有一个。 可以按任意顺序返回。 要求 时间复杂度O(n) 思路 是和为K的子数组 的简化版。 也是用哈斯表:遍历,一边记录元素出现的位置,一边判断 (K-nums[i]) 是否出现过。 若出现过,直接返回答案 若没有,记录 nums[
阅读全文
摘要:题目链接 题目描述 求给出s中的最长回文串 思路 O(n^2)暴力,中心扩展。 manacher算法,O(n). C++代码 class Solution { public: string longestPalindrome(string s) { // 只返回长度 if (s.length() =
阅读全文
摘要:题目链接 题目描述 如标题 思路 首先要写一个大数加法,从右往左,按位相加,记录进位值。 从右向做,用一个乘数的每一位,去乘另一个乘数,相乘的积累加。 注意: 相乘的 积 要依次增加一个0. 即:123 × 456 = (100+20+3) × 456 时间复杂度:O(mn+n^2) 有个O(clo
阅读全文
摘要:问题链接 问题描述 给你一个字符串数组,请你将 拥有相同字母的单词 组合在一起。 可以按任意顺序返回结果列表。 示例 1: 输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [["bat"],["nat","tan"],["ate",
阅读全文
摘要:题目链接 题目描述 字符串 S 由小写字母组成。 把这个字符串划分为尽可能多的片段, 同一字母最多出现在一个片段中。 返回一个表示每个字符串片段的长度的列表。 要求 时间复杂度:O(n) 思路 先遍历一遍 s ,用 map 记录每一个字母出现的区间。 问题就转化成了对区间的合并操作。 再遍历一遍 s
阅读全文
摘要:题目链接 题目描述 给定一种规律 pattern 和一个字符串 str , 判断 str 是否遵循相同的规律。 示例1: 输入: pattern = "abba", str = "dog cat cat dog" 输出: true 示例2: 输入: pattern = "abba", str = "
阅读全文
摘要:题目链接 题目描述 给你一个整数数组 nums 和一个整数 k , 统计数组中和为 k 的连续子数组的个数。 注意: 元素有正负....!! 要求 时间复杂度:O(n) 思路 (感觉自己好笨....😔) 想到了用前缀和pre[i],从 pre[0]~pre[i-1] 中找 (pre[i]-k),
阅读全文
摘要:题目链接 题目描述 整数数组 nums ,是否存在长度为 3 的递增子序列。(可以不紧邻) 如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k , 使得 \(nums[i] < nums[j] < nums[k]\),返回 true ; 否则,返回 false 。 要求 时间复
阅读全文
摘要:题目链接 题目描述 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。 注意: 可以认为区间的终点总是大于它的起点。 区间 [1,2] 和 [2,3] 没有重叠。 要求 O(n)的时间复杂度。 思路 贪心 去掉的区间尽可能少,即剩余的区间尽可能多。 按照区间的 左 端点升序,遍历区
阅读全文
摘要:题目链接 题目描述 正整数 n ,生成一个 1 到 \(n^2\) 所有元素,且按顺时针顺序螺旋排列的正方形矩阵。 思路 用**(row, col)** 表示要矩阵的坐标。 从**(0, 0)** 位置开始,依次按 右-下-左-上 的顺序插入元素 定义一个表示方向的数组 d[4][2] = {{0,
阅读全文
摘要:题目链接 题目描述 输出杨辉三角第 n 行。 下标从 0 开始。 要求 时间复杂度 O(n) n 最大为 33. 思路 \(O(n^2)\), 从第0行开始递推。 \(O(n)\), 直接计算第 n 行,利用公式, 递推计算第 n 行 第 i 个元素。 \(a[n][i] = C_{n}^{i}=C
阅读全文
摘要:题目链接 问题描述 不使用内建的哈希库设计一个哈希映射。 MyHashMap() 用空映射初始化对象。 put(key, value) 向 HashMap 插入一个键值对 (key, value)如果 key 已经存在,则更新其对应的值 value。 get(key) 返回key 所映射的 valu
阅读全文
摘要:题目链接 题目描述 给你一个只含有若干个0,1,2的数组。 使相同的数字挨在一起,并按0,1,2的顺序排列。 如:1,2,1,2,0 输出:0,1,1,2,2 要求 O(n)的时间复杂度 思路 首先想到的就是sort() 😊 ,但是没有什么排序算法能做到O(n) 不要把思维局限到排序上,这其实是一
阅读全文
摘要:题目链接 题目描述 给你 n 个整数的数组 nums,判断是否存在三个元素 a,b,c , 使得 a + b + c = 0 ? 请你找出所有和为 0 且不重复的三元组。 注意: 答案中不可以包含重复的三元组。 思路 假设不是找三个元素,而是两个元素。 首先要确定一个元素,至少要把所有元素遍历一遍,
阅读全文
摘要:题目链接 题目描述 给出n个数,找到其中的众数,保证有且仅有一个。 要求 时间复杂度:O(n), 空间复杂度:O(1) 思路 首先想到的还是哈希表,但是空间复杂度。。不可能用哈希。 核心思想:对拼消耗,就像玩卡牌游戏一样。 把相同的元素看作一个集合,这个集合就像是一个玩家的牌库。 两个不同的元素会的
阅读全文
摘要:题目链接 题目描述 给定一个非空整数数组,只有一个元素只出现一次,其余每个元素均出现两次。 找出只出现了一次的元素。 要求: O(n)的时间复杂度,不使用额外的空间。 (好久没做题了,写几道简单的找找手感😁) 思路: 因为重复的元素都是两个,首先想到是排序,然后两个两个去判断。 但是排序最快一般也
阅读全文

浙公网安备 33010602011771号