摘要:
题目链接 描述 给出一个长度为 n 的,仅包含字符 '(' 和 ')' 的字符串,计算最长的格式正确的括号子串的长度。 例1: 对于字符串 "(()" 来说,最长的格式正确的子串是 "()" ,长度为 2 . 例2:对于字符串 ")()())" , 来说, 最长的格式正确的子串是 "()()" ,长 阅读全文
摘要:
题目链接 题目描述 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 例如: 给定的树 A: 3 / \ 4 5 / \ 1 2 给定的树 B: 4 / 1 思路 递归呗。。。 想半天不会写。 一看别人代码这么 阅读全文
摘要:
题目链接 描述: 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 4 / \ 2 7 / \ / \ 1 3 6 9 镜像输出: 4 / \ 7 2 / \ / \ 9 6 3 1 思路: 一直不会写递归。。。 直接看代码吧,想明白就行。 类似交换两个数。。 代码: class S 阅读全文
摘要:
题目链接 题目描述 字符串 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() = 阅读全文