LeetCode
Hello、MrTree
Hello,树先生。
展开
-
Leetcode:最接近的三数之和(双指针)
最接近的三数之和给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。实现思路:双指针,对于N数之和一类的问题,第一反应就应该是先排序,然后使用双指针。如果使用暴力解法,时间复杂度要O(n^3),一般会超原创 2020-10-05 14:45:48 · 263 阅读 · 0 评论 -
LeetCode:子数组最大平均数 I
LeetCode:子数组最大平均数 I题目给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。示例 1:输入: [1,12,-5,-6,50,3], k = 4输出: 12.75解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75注意:1 <= k <= n <= 30,000。所给数据范围 [-10,000...原创 2019-07-24 16:49:39 · 453 阅读 · 0 评论 -
LeetCode:课程表 (1, 2)
LeetCode:课程表这是很简单的拓扑排序问题现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]] 输出: true解释: 总共有 2 门课程。学习课程...原创 2019-07-19 14:16:12 · 493 阅读 · 0 评论 -
LeetCode:N皇后
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入: 4输出: [ [".Q..", // 解法 1 "...Q", "...原创 2019-08-04 14:00:32 · 168 阅读 · 0 评论 -
LeetCode:全排列
leetcode题目链接给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]实现思路:使用DFS深搜, num.pop_back()这句很关键class Solution {public: vect...原创 2019-08-04 14:49:16 · 674 阅读 · 0 评论 -
LeetCode:两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]代码class Solution {public: vector<int> intersection(vecto...原创 2019-07-26 16:47:20 · 249 阅读 · 0 评论 -
LeetCode:替换空格
题目描述:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。输入:每个输入文件仅包含一组测试样例。 对于每组测试案例,输入一行代表要处理的字符串。输出:对应每个测试案例,出经过处理后的字符串。样例输入:We Are Happy样例输出:We%20Are%20Ha...原创 2019-07-28 14:16:02 · 972 阅读 · 0 评论 -
LeetCode:合并区间
给出一个区间的集合,请合并所有重叠的区间。来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/merge-intervals示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示...原创 2019-07-28 16:14:18 · 847 阅读 · 0 评论 -
LeetCode:猜数字大小
我们正在玩一个猜数字游戏。 游戏规则如下:我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。每次你猜错了,我会告诉你这个数字是大了还是小了。你调用一个预先定义好的接口 guess(int num),它会返回 3 个可能的结果(-1,1 或 0):-1 : 我的数字比较小 1 : 我的数字比较大 0 : 恭喜!你猜对了!示例 :输入: n = 10, pick = 6输...原创 2019-08-23 16:24:29 · 312 阅读 · 0 评论 -
LeetCode:三数之和
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]class Solutio...原创 2019-08-20 22:50:42 · 137 阅读 · 0 评论 -
LeetCode:子集
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]class Solution {public: vector<vector<...原创 2019-08-25 14:56:14 · 182 阅读 · 0 评论 -
LeetCode:前 K 个高频元素
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1] 。class Solution {public: vector<int> topKFrequent(vector<int>&...原创 2019-08-16 11:16:03 · 209 阅读 · 0 评论 -
LeetCode:最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6 class Solution {public: int maxSubArray(vector<int>& nums) { ...原创 2019-08-12 22:49:09 · 170 阅读 · 0 评论 -
LeetCode:二叉树最大宽度
class Solution {public: struct node { TreeNode* root; long double site;//用个样例血坑必须扩大范围不然过不了 }; node start,end,tmp,temp; queue<node> que;long double curLayer=1,ind...原创 2019-08-30 13:10:34 · 355 阅读 · 0 评论 -
LeetCode:令牌放置
你的初始能量为 P,初始分数为 0,只有一包令牌。令牌的值为 token[i],每个令牌最多只能使用一次,可能的两种使用方法如下:如果你至少有 token[i] 点能量,可以将令牌置为正面朝上,失去 token[i] 点能量,并得到 1 分。如果我们至少有 1 分,可以将令牌置为反面朝上,获得 token[i] 点能量,并失去 1 分。在使用任意数量的令牌后,返回我们可以得到的最大分数。...原创 2019-07-25 14:49:42 · 324 阅读 · 0 评论 -
LeetCode题目:从二叉搜索树到更大和树
从二叉搜索树到更大和树给出二叉搜索树的根节点,该二叉树的节点值各不相同,修改二叉树,使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键小于节点键的节点。节点的右子树仅包含键大于节点键的节点。左右子树也必须是二叉搜索树。示例:输入:[4,1,6,0,2,5,7,null,null,null,3,nu...原创 2019-07-06 19:27:54 · 465 阅读 · 0 评论 -
LeetCode题目: 二叉树的中序遍历
二叉树的中序遍历给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]class Solution {public: vector<int> inorderTraversal(TreeNode* root) { vector<int> ...原创 2019-07-08 13:36:18 · 505 阅读 · 0 评论 -
LeetCode题目: 二叉树的前序遍历
二叉树的前序遍历给定一个二叉树,返回它的 前序 遍历。示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]class Solution {public: vector<int> preorderTraversal(TreeNode* root) { vector<in...原创 2019-07-08 13:42:54 · 1186 阅读 · 0 评论 -
LeetCode题目:二叉树的后序遍历
二叉树的后序遍历给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]后序遍历比较复杂,但有种非常简单的方法: 把前序遍历反转 如前序: root->left->right 修改前序: root->right->left 反转前序得到...原创 2019-07-08 13:57:56 · 706 阅读 · 0 评论 -
LeetCode题目:对称二叉树
对称二叉树判定给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3实现思路:可以将整棵树分为左子树和...原创 2019-07-08 17:41:23 · 178 阅读 · 0 评论 -
LeetCode题目:加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。class...原创 2019-07-08 17:45:18 · 217 阅读 · 0 评论 -
LeetCode题目:二叉搜索树中的众数
二叉搜索树中的众数给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2], 1 \ 2 / 2 返回[2]....原创 2019-07-08 17:47:50 · 625 阅读 · 0 评论 -
LeetCode题目20:有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “(...原创 2019-07-03 20:19:24 · 134 阅读 · 0 评论 -
LeetCode题目:比较含退格的字符串
LeetCode题目:比较含退格的字符串给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。示例 1:输入:S = “ab#c”, T = “ad#c” 输出:true 解释:S 和 T 都会变成 “ac”。示例 2:输入:S = “ab##”, T = “c#d#” 输出:true 解释:S 和 T 都会变成 “...原创 2019-07-03 21:35:57 · 632 阅读 · 0 评论 -
LeetCode题目:最小栈
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。 pop() – 删除栈顶的元素。 top() – 获取栈顶元素。 getMin() –检索栈中的最小元素。示例:MinStack minStack = new MinStack(); minStack.push(-2);minStack.push(0);...原创 2019-07-04 09:28:41 · 355 阅读 · 0 评论 -
LeetCode题目:删除字符串中的所有相邻重复项
删除字符串中的所有相邻重复项给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:“abbaca” 输出:“ca” 解释: 例如,在 “abbaca” 中,我们可以删除 “bb”由于两字母相邻且相同,这是此时唯一可以执行删除操作的重...原创 2019-07-04 09:43:59 · 1001 阅读 · 0 评论 -
LeetCode题目:用栈实现队列
LeetCode题目:用栈实现队列具体原理:首先用两个栈模拟队列,分别为输入栈InputStack和输出栈OutputStack。-push:InputStack栈添加数据-pop:把InputStack栈的数据拷贝给OutputStack栈。然后对OutputStack栈 执行pop 操作。完成之后将数据重新拷贝给InputStack,OutputStack清空-top:同pop理,但...原创 2019-07-04 17:25:03 · 449 阅读 · 0 评论 -
LeetCode题目:用队列实现栈
用两个队列实现栈首先用两个队列模拟栈,两个队列是输入队列InputQueue和输出队列OutputQueue。-push:直接将输入的数据压入InputQueue.-pop:假设InputQueue有N个数据,将N-1个数据压入OutputQueue,将InputQueue中的最后一个数据弹出,并将InputQueue执行pop操作,清空队列,执行pop操作。执行完成之后将OutputQu...原创 2019-07-05 09:06:22 · 661 阅读 · 0 评论 -
LeetCode题目:二叉树的层次遍历
二叉树的层次遍历给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如: 给定二叉树 [3,9,20,null,null,15,7],3/ \9 20/ \15 7 返回其自底向上的层次遍历为: [ [15,7], [9,20], [3] ]。class Solution {public: ...原创 2019-07-07 20:35:26 · 645 阅读 · 0 评论