摘要: 问题 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 示例 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 阅读全文
posted @ 2021-03-06 22:33 tmpUser 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 问题 0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数 阅读全文
posted @ 2021-03-06 21:49 tmpUser 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 问题 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。 示例 输入: [1,2,3,4,5] 输出: True 解答1:找充要条件 class Solution { 阅读全文
posted @ 2021-03-06 20:47 tmpUser 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 问题 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。 示例 输入: 1 输出: [0.16667,0.16667,0.16667,0.16 阅读全文
posted @ 2021-03-06 20:00 tmpUser 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 问题 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。 若队列为空,pop_front 和 max_value 需要返回 -1 示例 输入: ["MaxQueue","push_b 阅读全文
posted @ 2021-03-06 18:36 tmpUser 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 问题 给定一个数组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 阅读全文
posted @ 2021-03-06 18:23 tmpUser 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 问题 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 示例 输入: s = "abcdefg", k = 2 输出: "cdefgab" 解答1 阅读全文
posted @ 2021-03-06 17:11 tmpUser 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 问题 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。 示例 输入: " hello world! " 输出: "world! hello" 解释: 阅读全文
posted @ 2021-03-06 16:35 tmpUser 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 问题 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例 输入: target = 15 输出: [[1,2,3,4,5],[4,5,6],[7,8]] 解答 class Solutio 阅读全文
posted @ 2021-03-06 15:43 tmpUser 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 问题 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 示例 输入: nums = [2,7,11,15], target = 9 输出: [2,7] 或者 [7,2] 解答 class Solution { public: 阅读全文
posted @ 2021-03-06 15:20 tmpUser 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 问题 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 示例 输入: nums = [1,2,10,4,1,4,3,3] 输出: [2,10] 或 [10,2] 解答 class Solution { 阅读全文
posted @ 2021-03-06 15:12 tmpUser 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 问题 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 解答 class Solution { public: bool isBalanced(TreeNode* root) { recur(root); return 阅读全文
posted @ 2021-03-06 14:33 tmpUser 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 问题 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 解答1:前序遍历+回溯 class Solution { public: int maxDepth(TreeNode* root) { if (!root) ret 阅读全文
posted @ 2021-03-06 13:42 tmpUser 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 问题 给定一棵二叉搜索树,请找出其中第k大的节点。 解答1:递归 class Solution { public: int kthLargest(TreeNode* root, int k) { if (!root || flag) return res; // 使用flag跳出递归 kthLarg 阅读全文
posted @ 2021-03-06 11:07 tmpUser 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 问题 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 示例 输入: [0,1,3] 输出: 2 解答 class Solution { public: int missingNum 阅读全文
posted @ 2021-03-06 10:29 tmpUser 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 问题 统计一个数字在排序数组中出现的次数。 示例 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 输入: nums = [5,7,7,8,8,10], target = 6 输出: 0 解答 class Solution { public: int searc 阅读全文
posted @ 2021-03-06 10:11 tmpUser 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 问题 输入两个链表,找出它们的第一个公共节点。 示例 解答 class Solution { public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode *curA = headA, *curB 阅读全文
posted @ 2021-03-06 09:05 tmpUser 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 问题 给定一个整数数组nums。区间和S(i, j)表示在nums中,位置从i到j的元素之和,包含i和j,(i ≤ j)。 请你以下标i(0 <= i <= nums.length )为起点,元素个数逐次递增,计算子数组内的元素和。 当元素和落在范围[lower, upper](包含lower和up 阅读全文
posted @ 2021-03-06 00:19 tmpUser 阅读(61) 评论(0) 推荐(0) 编辑