![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode
文章平均质量分 60
萧瑟1
这个作者很懒,什么都没留下…
展开
-
Leetocode 每日一题 并查集 题目整理
547. 省份数量题目链接:547思路:并查集裸题代码如下class Solution { int[] pre; private int find(int x) { if(x==pre[x]) return x; int temp = find(pre[x]); return temp; } private void union(int a,int b) { int pa = find原创 2021-01-19 15:23:26 · 232 阅读 · 2 评论 -
Leetcode 3Sum Closest和4Sum问题
这两道问题都是15题3Sum的变式,可以通过套用3Sum的方法做出来,不过运行的速度不是很快,需要进一步优化,在这里说一下可以优化的情况,如果不知道3Sum题的做法的话,可以看下我上一篇博客,在这里附上链接:Leetcode 15.3Sum16. 3Sum Closest题目描述Given an array nums of n integers and an integer target, ...原创 2020-01-16 15:31:01 · 166 阅读 · 0 评论 -
Leetcode 15. 3Sum
题目描述Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.Note:The solution set must not c...原创 2020-01-15 18:04:18 · 147 阅读 · 0 评论 -
找出无序数组第K大/小数的方法(Leetcode 215)
上一篇博客讲解了找出无序数组中位数的方法,找无序数组第K大数的方法跟中位数的方法差不多,K值可以类比成中位数的值,所以方法还是差不多的,分别是1.排序+取值 2.快排思想 3.桶排序。上一篇博客详细讲了这三种方法。在这里附上上一篇博客的链接:找出无序数组中位数的方法这里我们以Leetcode中215题为例进行讲解1 排序+取值这个方法就不多说了。2 快排思想这里主要说一下快排哨兵元素选...原创 2020-01-14 16:02:17 · 749 阅读 · 0 评论 -
Leetcode 第 117 场周赛 前三题题解
965. 单值二叉树题目:如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。 示例 1:输入:[1,1,1,1,1,null,1]输出:true示例 2:输入:[2,2,2,5,2]输出:false 提示:给定树的节点数范围是 [1, 100]。 每个节点的...原创 2018-12-30 21:25:44 · 140 阅读 · 0 评论 -
Leetcode 963. 最小面积矩形 II
题目:给定在 xy 平面上的一组点,确定由这些点组成的任何矩形的最小面积,其中矩形的边不一定平行于 x 轴和 y 轴。如果没有任何矩形,就返回 0。 示例 1:输入:[[1,2],[2,1],[1,0],[0,1]]输出:2.00000解释:最小面积的矩形出现在 [1,2],[2,1],[1,0],[0,1] 处,面积为 2。示例 2:输入:[[0,1]...原创 2018-12-24 18:43:28 · 940 阅读 · 0 评论 -
Leetcode 47. 全排列 II dfs
题目:给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]思路:dfs+去重。代码如下: class Solution {public: map<string,int>ma; vector<vector<int&g...原创 2019-01-04 00:55:00 · 177 阅读 · 0 评论 -
Leetcode 46. 全排列 dfs
题目:给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]思路:dfs,注意递归结束条件是vector中的数目等于题目给出的vector为止。代码如下:class Solution {publ...原创 2019-01-04 00:02:16 · 185 阅读 · 0 评论 -
Leetcode 17. 电话号码的字母组合 递归
题目:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明原创 2019-01-03 21:45:11 · 163 阅读 · 0 评论 -
Leetcode 962. 最大宽度坡
题目:给定一个整数数组 A,坡是元组 (i, j),其中 i < j 且 A[i] <= A[j]。这样的坡的宽度为 j - i。找出 A 中的坡的最大宽度,如果不存在,返回 0 。 示例 1:输入:[6,0,8,2,1,5]输出:4解释:最大宽度的坡为 (i, j) = (1, 5): A[1] = 0 且 A[5] = 5.示例 2:输入:...原创 2018-12-24 18:25:43 · 309 阅读 · 0 评论 -
Leetcode 390. 消除游戏 递归
题目:给定一个从1 到 n 排序的整数列表。首先,从左到右,从第一个数字开始,每隔一个数字进行删除,直到列表的末尾。第二步,在剩下的数字中,从右到左,从倒数第一个数字开始,每隔一个数字进行删除,直到列表开头。我们不断重复这两步,从左到右和从右到左交替进行,直到只剩下一个数字。返回长度为 n 的列表中,最后剩下的数字。示例:输入:n = 9,1 2 3 4 5 6 7 8...原创 2018-12-27 15:20:30 · 644 阅读 · 0 评论 -
Leetcode 376. 摆动序列 O(n)解法
题目:如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为...原创 2018-12-27 10:16:10 · 360 阅读 · 1 评论 -
Leetcode 77. 组合 dfs
题目:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]注意,【1,2】和【2,1】是一种情况。代码如下:class Solution {public: vector&l...原创 2019-01-04 20:34:08 · 131 阅读 · 0 评论 -
Leetcode 210. 课程表 II 拓扑排序
题目:示例 1:输入: 2, [[1,0]] 输出: [0,1]解释: 总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因此,正确的课程顺序为 [0,1] 。示例 2:输入: 4, [[1,0],[2,0],[3,1],[3,2]]输出: [0,1,2,3] or [0,2,1,3]解释: 总共有 4 门课程。要学习课程 3,你应该先完成课程 1 和课程 2。...原创 2019-01-04 23:00:44 · 194 阅读 · 0 评论 -
Leetcode 957. N 天后的牢房 循环节
题目:8 间牢房排成一排,每间牢房不是有人住就是空着。每天,无论牢房是被占用或空置,都会根据以下规则进行更改:如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用。 否则,它就会被空置。(请注意,由于监狱中的牢房排成一行,所以行中的第一个和最后一个房间无法有两个相邻的房间。)我们用以下方式描述监狱的当前状态:如果第 i 间牢房被占用,则 cell[i]==1,否...原创 2018-12-25 20:47:25 · 681 阅读 · 0 评论 -
Leetcdoe 5. 最长回文子串 两种解法
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"1.将每个点当作中心点挨个枚举,求出最长的区间即可。代码如下: class Solution { public String...原创 2019-02-02 23:09:22 · 145 阅读 · 0 评论 -
leetcode 983. 最低票价 dp
在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为 costs[0] 美元; 一张为期七天的通行证售价为 costs[1] 美元; 一张为期三十天的通行证售价为 costs[2] 美元。通行证允许数天无限制的旅行。...原创 2019-02-01 22:29:17 · 506 阅读 · 0 评论 -
Leetcode 984. 不含 AAA 或 BBB 的字符串
给定两个整数 A 和 B,返回任意字符串 S,要求满足:S 的长度为 A + B,且正好包含 A 个 'a' 字母与 B 个 'b' 字母; 子串 'aaa' 没有出现在 S 中; 子串 'bbb' 没有出现在 S 中。 示例 1:输入:A = 1, B = 2输出:"abb"解释:"abb", "bab" 和 "bba" 都是正确答案。示例 2:输入:A = ...原创 2019-02-01 21:36:06 · 252 阅读 · 0 评论 -
Leetcode 207. 课程表 拓扑排序dfs
题目:现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]] 输出: true解释: 总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所...原创 2019-01-03 00:33:57 · 340 阅读 · 0 评论 -
Leetcode 116. 填充同一层的兄弟节点 二叉树的层次遍历
题目:给定一个二叉树struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。...原创 2019-01-02 23:33:22 · 123 阅读 · 0 评论 -
Leetcode 200. 岛屿的个数
题目:给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3思路:dfs,对每一个点...原创 2019-01-02 23:01:05 · 118 阅读 · 0 评论 -
leetcode 841. 钥匙和房间 dfs
题目:有 N 个房间,开始时你位于 0 号房间。每个房间有不同的号码:0,1,2,...,N-1,并且房间里可能有一些钥匙能使你进入下一个房间。在形式上,对于每个房间 i 都有一个钥匙列表 rooms[i],每个钥匙 rooms[i][j] 由 [0,1,...,N-1] 中的一个整数表示,其中 N = rooms.length。 钥匙 rooms[i][j] = v 可以打开编号为 v ...原创 2019-01-01 13:48:45 · 158 阅读 · 0 评论 -
Leetcode 958. 二叉树的完全性检验
题目:给定一个二叉树,确定它是否是一个完全二叉树。百度百科中对完全二叉树的定义如下:若设二叉树的深度为 h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。(注:第 h 层可能包含 1~ 2h 个节点。) 示例 1:输入:[1,2,3,4,5,6]输出:true解释:最后一层前的每一层都...原创 2018-12-25 20:55:03 · 444 阅读 · 0 评论 -
Leetcode 134. 加油站
题目:在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明: 如果题目有解,该答案即为唯一答案。 输入数组均为非空数组,且长度相同。...原创 2018-12-27 10:08:13 · 141 阅读 · 0 评论 -
Leetcode 129 求根到叶子节点数字之和(递归)
给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 25解释:从根到叶子节点路径 1->2 ...原创 2018-11-05 23:39:52 · 276 阅读 · 0 评论 -
Leetcode 199. 二叉树的右视图 二叉树的遍历
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---此题有两种解法,一种是二...原创 2018-09-09 11:16:45 · 249 阅读 · 0 评论 -
Leetcode 107. 二叉树的层次遍历 II 队列+栈的应用
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]] 看到这个结果很容易想到先进后出...原创 2018-09-03 21:43:23 · 266 阅读 · 0 评论 -
Leetcode 113. 路径总和 II dfs
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ ...原创 2018-09-03 21:20:13 · 167 阅读 · 0 评论 -
Leetcode 315. 计算右侧小于当前元素的个数 线段树
给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。示例:输入: [5,2,6,1]输出: [2,1,1,0] 解释:5 的右侧有 2 个更小的元素 (2 和 1).2 的右侧仅有 1 个更小的元素 (1).6 的右侧有 1 个更小的元素 (1)....原创 2018-09-05 21:43:24 · 722 阅读 · 0 评论 -
Leetcode 110. 平衡二叉树 dfs
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null...原创 2018-09-03 13:35:57 · 177 阅读 · 0 评论 -
Leetcode 111. 二叉树的最小深度 dfs
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2. 求最小深度,分三种情况。如果左右子树都不为空,则递归求他们两者的最小值,若...原创 2018-09-03 11:38:42 · 248 阅读 · 0 评论 -
Leetcode 100. 相同的树 dfs
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 ...原创 2018-09-03 10:50:45 · 142 阅读 · 0 评论 -
Leetcode 买卖股票的最佳时机 II 贪心
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔...原创 2018-09-08 17:07:29 · 269 阅读 · 0 评论 -
Leetcode 旋转图像
给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3...原创 2018-09-08 16:24:34 · 171 阅读 · 0 评论 -
Leetcode 15. 三数之和
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]] 一开始想到的是两个...原创 2018-09-11 14:20:53 · 101 阅读 · 0 评论 -
Leetcode 118 寻找峰值
峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。示例 1:输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的函数应该返回其索引 2...原创 2018-09-06 15:16:11 · 96 阅读 · 0 评论 -
Leetcode 121 买卖股票的最佳时机 动态规划
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...原创 2018-09-10 11:35:52 · 200 阅读 · 0 评论 -
Leetcode 103 二叉树的锯齿形层次遍历 (二叉树的层次遍历)
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20,9], [15,7]] 是二叉树的层次遍历的一种变...原创 2018-11-05 15:01:29 · 198 阅读 · 0 评论 -
Leetcode 437 路径总和 III(递归)(未解决)
给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8...原创 2018-11-07 18:52:01 · 129 阅读 · 0 评论 -
Leetcode 124 二叉树中的最大路径和 (递归)
给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6示例 2:输入: [-10,9,20,null,null,15,7] -10 / \ 9 20 ...原创 2018-11-06 23:44:13 · 200 阅读 · 0 评论