摘要:
问题 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。 若队列为空,pop_front 和 max_value 需要返回 -1 示例 输入: ["MaxQueue","push_b 阅读全文
摘要:
问题 给定一个数组nums和滑动窗口的大小k,请找出所有滑动窗口里的最大值。 示例 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5,5,6,7] 解答 class Solution { public: vector<int> maxSliding 阅读全文
摘要:
问题 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 示例 输入: s = "abcdefg", k = 2 输出: "cdefgab" 解答1 阅读全文
摘要:
问题 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。 示例 输入: " hello world! " 输出: "world! hello" 解释: 阅读全文
摘要:
问题 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例 输入: target = 15 输出: [[1,2,3,4,5],[4,5,6],[7,8]] 解答 class Solutio 阅读全文
摘要:
问题 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 示例 输入: nums = [2,7,11,15], target = 9 输出: [2,7] 或者 [7,2] 解答 class Solution { public: 阅读全文
摘要:
问题 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 示例 输入: nums = [1,2,10,4,1,4,3,3] 输出: [2,10] 或 [10,2] 解答 class Solution { 阅读全文
摘要:
问题 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 解答 class Solution { public: bool isBalanced(TreeNode* root) { recur(root); return 阅读全文
摘要:
问题 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 解答1:前序遍历+回溯 class Solution { public: int maxDepth(TreeNode* root) { if (!root) ret 阅读全文
摘要:
问题 给定一棵二叉搜索树,请找出其中第k大的节点。 解答1:递归 class Solution { public: int kthLargest(TreeNode* root, int k) { if (!root || flag) return res; // 使用flag跳出递归 kthLarg 阅读全文