
Leetcode
月雲之霄
这个作者很懒,什么都没留下…
展开
-
《Leetcode》目录
序号 题目 类型 标记 1 43. 字符串相乘 字符串 2 513. 找树左下角的值 二叉树 3 450. 删除二叉搜索树中的节点 二叉树 4 86. 分隔链表 链表 ...原创 2019-09-01 10:36:21 · 334 阅读 · 0 评论 -
《Leetcode | 02》
序号 题目 类型 标记 863. 二叉树中所有距离为 K 的结点 ★ 94. 二叉树的中序遍历 ★ 102. 二叉树的层次遍历 144. 二叉树的前序遍历 450. 删除二叉搜索树中的节点 ...原创 2019-09-07 11:34:07 · 275 阅读 · 0 评论 -
15. 三数之和
原创 2020-07-24 16:16:45 · 164 阅读 · 0 评论 -
77. 组合
设计模式目录索引观察者模式 工厂模式 单例模式 策略模式原创 2019-09-02 16:08:18 · 116 阅读 · 0 评论 -
155. 最小栈
题目连接:力扣解法:class MinStack {public: MinStack() { getmin = INT_MAX; } void push(int val) { getmin = min(getmin, val); st.push(val); } void pop() { if(st.top() == getmin) { .原创 2022-02-20 17:29:05 · 468 阅读 · 1 评论 -
88. 合并两个有序数组
给定两个有序整数数组nums1和nums2,将nums2合并到nums1中,使得num1成为一个有序数组。说明:初始化nums1和nums2的元素数量分别为m和n。 你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存nums2中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 ...原创 2019-04-05 13:43:10 · 149 阅读 · 0 评论 -
Leetcode 118. 杨辉三角
给定一个非负整数numRows,生成杨辉三角的前numRows行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]class Solution {public: vector<vector<int&...原创 2019-04-08 11:24:19 · 116 阅读 · 0 评论 -
【Leetcode | 49】230. 二叉搜索树中第K小的元素
给定一个二叉搜索树,编写一个函数kthSmallest来查找其中第k个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \1 4 \ 2输出: 1示例 2:输入: root = [5,3,6,2,4,null,null,1]...原创 2019-04-16 16:43:10 · 144 阅读 · 0 评论 -
21. 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-lists著作...原创 2019-04-13 22:39:21 · 190 阅读 · 0 评论 -
141. 环形链表
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos是-1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1,2], pos...原创 2019-04-14 20:32:57 · 112 阅读 · 0 评论 -
64. 最小路径和
给定一个包含非负整数的mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。class Solution {public: int minPathSum(...原创 2019-04-15 10:43:24 · 106 阅读 · 0 评论 -
144. 二叉树的前序遍历
给定一个二叉树,返回它的前序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,2,3]进阶:递归算法很简单,你可以通过迭代算法完成吗?解法一:/** * Definition for a binary tree node. * struct TreeNode { * int v...原创 2019-04-27 12:57:37 · 172 阅读 · 0 评论 -
【Leetcode | 48】226. 翻转二叉树
翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1备注:这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在...原创 2019-05-08 19:08:52 · 110 阅读 · 0 评论 -
189. 旋转数组
给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例2:输入: [-1,-100,3,...原创 2019-05-13 20:44:21 · 113 阅读 · 0 评论 -
58. 最后一个单词的长度
给定一个仅包含大小写字母和空格' '的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5class Solution {public: int lengthOfLastWord(string s) { int res...原创 2019-05-13 21:41:35 · 98 阅读 · 0 评论 -
【Leetcode | 9】217. 存在重复元素
解题代码:bool containsDuplicate(vector<int>& nums) { return nums.size() > set<int>(nums.begin(), nums.end()).size();}原创 2019-05-09 09:48:51 · 103 阅读 · 0 评论 -
【Leetcode】1. 两数之和
给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解题代码...原创 2019-05-09 10:09:25 · 94 阅读 · 0 评论 -
103. 二叉树的锯齿形层次遍历
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20,9], [15,7]]解法:class Sol...原创 2019-05-14 16:49:14 · 172 阅读 · 0 评论 -
107. 二叉树的层次遍历 II
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]解法一:/** * De...原创 2019-05-14 17:01:49 · 85 阅读 · 0 评论 -
515. 在每个树行中找最大值
您需要在二叉树的每一行中找到最大的值。示例:输入: 1 / \ 3 2 / \ \ 5 3 9 输出: [1, 3, 9]class Solution {public: vector<int> largestValues(TreeNode* root) ...原创 2019-05-14 17:14:22 · 163 阅读 · 0 评论 -
Leetcode 2. 两数相加
给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -...原创 2019-05-09 22:19:11 · 92 阅读 · 0 评论 -
19. 删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n保证是有效的。进阶:你能尝试使用一趟扫描实现吗?来源:力扣(LeetCode)链接:https://leetcod...原创 2019-05-09 22:40:33 · 147 阅读 · 0 评论 -
83. 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例1:输入: 1->1->2输出: 1->2示例2:输入: 1->1->2->3->3输出: 1->2->3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-duplicates-fro...原创 2019-05-10 15:45:04 · 116 阅读 · 0 评论 -
82. 删除排序链表中的重复元素 II
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中没有重复出现的数字。示例1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例2:输入: 1->1->1->2->3输出: 2->3来源:力扣(LeetCode)链接:https://leetcode-c...原创 2019-05-10 16:10:03 · 207 阅读 · 0 评论 -
29. 两数相除
给定两个整数,被除数dividend和除数divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数dividend除以除数divisor得到的商。示例1:输入: dividend = 10, divisor = 3输出: 3示例2:输入: dividend = 7, divisor = -3输出: -2说明:被除数和除数均...原创 2019-05-20 23:02:11 · 139 阅读 · 0 评论 -
965. 单值二叉树
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回true;否则返回false。示例 1:输入:[1,1,1,1,1,null,1]输出:true示例 2:输入:[2,2,2,5,2]输出:false提示:给定树的节点数范围是[1, 100]。 每个节点的值都是整数,范围为[...原创 2019-05-24 19:29:46 · 183 阅读 · 0 评论 -
146. LRU缓存机制
运用你所掌握的数据结构,设计和实现一个LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用...原创 2019-05-11 17:32:21 · 110 阅读 · 0 评论 -
958. 二叉树的完全性检验
给定一个二叉树,确定它是否是一个完全二叉树。百度百科中对完全二叉树的定义如下:若设二叉树的深度为 h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。(注:第 h 层可能包含 1~2h个节点。)示例 1:输入:[1,2,3,4,5,6]输出:true解释:最后一层前的每一层都是满的(即,结点值...原创 2019-05-24 20:31:30 · 246 阅读 · 0 评论 -
897. 递增顺序查找树
给定一个树,按中序遍历重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。示例 :输入:[5,3,6,2,4,null,8,1,null,null,null,7,9] 5 / \ 3 6 / \ \ 2 4 8/ / \ 1 7 9输出:...原创 2019-05-24 21:58:06 · 130 阅读 · 0 评论 -
108. 将有序数组转换为二叉搜索树
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -1...原创 2019-05-25 14:52:06 · 163 阅读 · 0 评论 -
110. 平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回true。示例 2:给定二叉树[1,2,2,3,3,null,null...原创 2019-05-25 15:00:12 · 222 阅读 · 0 评论 -
114. 二叉树展开为链表
给定一个二叉树,原地将它展开为链表。例如,给定二叉树 1 / \ 2 5/ \ \3 4 6将其展开为:1\ 2 \ 3 \ 4 \ 5 \ 6来源:力扣(LeetCode)链接:https://leetcode-cn.com/...原创 2019-05-25 16:19:16 · 192 阅读 · 0 评论 -
349. 两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。示例 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: ...原创 2019-05-22 09:50:19 · 102 阅读 · 0 评论 -
350. 两个数组的交集 II
给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。 我们可以不考虑输出结果的顺序。进阶:...原创 2019-05-22 10:00:36 · 104 阅读 · 0 评论 -
283. 移动零
给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。解法一:class Solution {public: void moveZeroes(vector<int>&...原创 2019-05-22 10:24:41 · 105 阅读 · 0 评论 -
27. 移除元素
给定一个数组 nums和一个值 val,你需要原地移除所有数值等于val的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前...原创 2019-05-22 10:32:57 · 117 阅读 · 0 评论 -
41. 缺失的第一个正数
给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例1:输入: [1,2,0]输出: 3示例2:输入: [3,4,-1,1]输出: 2示例3:输入: [7,8,9,11,12]输出: 1说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。Put each number in its right place...原创 2019-05-22 11:10:22 · 139 阅读 · 0 评论 -
199. 二叉树的右视图
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入:[1,2,3,null,5,null,4]输出:[1, 3, 4]解释: 1 <---/ \2 3 <---\ \ 5 4 <---解法一:clas...原创 2019-05-26 10:46:46 · 114 阅读 · 0 评论 -
623. 在二叉树中增加一行
给定一个二叉树,根节点为第1层,深度为 1。在其第d层追加一行值为v的节点。添加规则:给定一个深度值d(正整数),针对深度为d-1层的每一非空节点N,为N创建两个值为v的左子树和右子树。将N原先的左子树,连接为新节点v的左子树;将N原先的右子树,连接为新节点v的右子树。如果d的值为 1,深度 d - 1 不存在,则创建一个新的根节点...原创 2019-05-27 10:15:17 · 133 阅读 · 0 评论 -
617. 合并二叉树
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。示例1:输入: Tree 1 Tree 2 ...原创 2019-05-27 10:42:53 · 118 阅读 · 0 评论