
LeetCode
瓜不田
这个作者很懒,什么都没留下…
展开
-
LeetCode11 盛水最多的容器 2018.6.19
题干:给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。注意:你不能倾斜容器,n 至少是2。class Solution {public: int maxArea(vector<int&...原创 2018-06-19 16:54:21 · 398 阅读 · 0 评论 -
LeetCode75 颜色分类 2018.9.12
题干:给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]class Solution(object):...原创 2018-09-12 19:45:44 · 228 阅读 · 0 评论 -
LeetCode31 下一个排列 2018.10.12
题干:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1思路:先从最后一个元素开始向前寻找,若一直为升序...原创 2018-10-12 10:36:59 · 229 阅读 · 0 评论 -
LeetCode69 x的平方根 2018.10.13
题干:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。采用二分法解题class Solu...原创 2018-10-13 10:05:18 · 239 阅读 · 0 评论 -
LeetCode33 搜索旋转排序数组 2018.10.7
题干:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,...原创 2018-10-07 14:45:20 · 292 阅读 · 0 评论 -
LeetCode77 组合 2018.10.19
题干:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]解题思路:利用到了回溯的思想,输出的组合首先是要递增,先判断长度是否等于k,等于k直接加入输出列表,小于k则通过循环将后...原创 2018-10-19 10:11:36 · 307 阅读 · 0 评论 -
LeetCode61 旋转链表 2018.10.22
题干:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2原创 2018-10-22 15:47:52 · 182 阅读 · 0 评论 -
LeetCode123 买卖股票的最佳时机III 2018.6.18
题干:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = ...原创 2018-06-18 12:32:13 · 732 阅读 · 0 评论 -
LeetCode122 买卖股票的最佳时机II 2018.6.25
题干:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得...原创 2018-06-25 14:34:05 · 227 阅读 · 0 评论 -
LeetCode55 跳跃游戏 2018.6.25
题干:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳...原创 2018-06-25 13:34:20 · 211 阅读 · 0 评论 -
LeetCode72 编辑距离 2018.6.14
参考了这篇文章,里面的分析很好,自己算法方面还是有很大的欠缺。题干:给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入: word1 = "horse", word2 = "ros"输出: 3解释: horse -> rorse (将 'h' 替换...原创 2018-06-14 13:59:29 · 182 阅读 · 0 评论 -
LeetCode17 电话号码的字母组合 2018.6.22
题干:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序原创 2018-06-22 14:45:10 · 339 阅读 · 0 评论 -
LeetCode60 第k个排列 2018.6.22
参考了这篇文章,原来是道数学题。。。题干:给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:"123""132""213""231""312""321"给定 n 和 k,返回第 k 个排列。说明:给定 n 的范围是 [1, 9]。给定 k 的范围是[1, n!]。示例 1:输入: n = 3, k原创 2018-06-22 17:46:29 · 390 阅读 · 0 评论 -
LeetCode121 买卖股票最佳时期 2018.6.15
题干:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利...原创 2018-06-15 11:20:24 · 203 阅读 · 0 评论 -
LeetCode101 对称二叉树 2018.6.23
题干:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [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说明:如果你可以运用递归和迭代两种方法解决这个问题,会很加分。...原创 2018-06-23 15:20:12 · 187 阅读 · 0 评论 -
LeetCode100 相同的树 2018.6.23
题干:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1...原创 2018-06-23 15:28:54 · 217 阅读 · 0 评论 -
LeetCode104 二叉树的最大深度 2018.6.24
题干:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。class Solution {public: int maxDepth(TreeNode...原创 2018-06-24 14:43:43 · 197 阅读 · 0 评论 -
LeetCode88 合并两个有序数组 2018.10.31
题干:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3n...原创 2018-10-31 09:26:30 · 172 阅读 · 0 评论 -
LeetCode78 子集 2018.10.24
题干:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]算法思想:与77题大致相同class Solution: def...原创 2018-10-24 09:26:11 · 258 阅读 · 0 评论 -
LeetCode96 不同的二叉搜索树 2019.6.1
题干:给定一个整数n,求以1 ...n为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 ...原创 2019-06-01 18:37:38 · 144 阅读 · 0 评论 -
LeetCode89 格雷码 2019.5.29
题干:格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入:2输出:[0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的n,其格雷编码序列并不唯一。例如,[0,2,3,1]也是一个有效的格雷编码序列。...原创 2019-05-29 19:12:36 · 311 阅读 · 0 评论 -
LeetCode105-106 从搜索序列中构建二叉树 2019.6.13
105:从前序和中序构建二叉树题干:根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7解题思路:先从前序遍历中找到树的...原创 2019-06-13 16:04:38 · 155 阅读 · 0 评论 -
LeetCode109 有序链表转化二叉树 2019.6.16
题干:给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ ...原创 2019-06-16 13:27:47 · 221 阅读 · 0 评论 -
LeetCode103 二叉树锯齿形层次遍历 2019.6.11
题干:给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20,9], [15,7]]class Solut...原创 2019-06-11 20:02:08 · 182 阅读 · 0 评论 -
LeetCode120 三角形最小路径和 2019.7.1
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为11(即,2+3+5+1= 11)。class Solution { public int minimumTotal(List<List&l...原创 2019-07-01 19:02:03 · 151 阅读 · 0 评论 -
LeetCode113 路径总和II 2019.6.23
题干:给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 13 4 / ...原创 2019-06-23 12:08:19 · 143 阅读 · 0 评论 -
LeetCode114 二叉树展开为链表 2019.6.27
题干:给定一个二叉树,原地将它展开为链表。例如,给定二叉树 1 / \ 2 5/ \ \3 4 6将其展开为:1\ 2 \ 3 \ 4 \ 5 \ 6public class Solution { public cla...原创 2019-06-27 16:36:15 · 143 阅读 · 0 评论 -
LeetCode71 简化路径 2019.5.28
题干:以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..)表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规范路径必须始终以斜杠/开头,并且两个目录名之...原创 2019-05-28 19:46:47 · 162 阅读 · 0 评论 -
LeetCode95 不同的二叉搜索树 II 2019.5.31
题干:给定一个整数n,生成所有由 1 ...n为节点所组成的二叉搜索树。示例:输入: 3输出:[ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树: 1 3 3 ...原创 2019-05-31 14:49:05 · 197 阅读 · 0 评论 -
LeetCode71 二叉树的中序遍历 2019.5.30
题干:给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]递归版本:package LeetCode94;/** * \* Project: LeetCode * \* Package: LeetCode94 * \* User: Hoodie_Willi ...原创 2019-05-30 21:04:15 · 182 阅读 · 0 评论 -
LeetCode80 删除排序数组中的重复项II 2018.11.5
题干:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组...原创 2018-11-05 15:20:36 · 167 阅读 · 0 评论 -
LeetCode112 路径总和 2018.11.13
题干:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 ...原创 2018-11-13 09:06:08 · 156 阅读 · 0 评论 -
LeetCode86 分割链表 2018.11.8
题干:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5算法思想:将小于x的元素单独拿出来,最后分成两个链...原创 2018-11-08 10:43:02 · 256 阅读 · 0 评论 -
LeetCode90 Subset II 2018.11.8
题干:Given a collection of integers that might contain duplicates, nums, return all possible subsets (the power set).Note: The solution set must not contain duplicate subsets.Example:Input: [1,...原创 2018-11-08 21:04:57 · 178 阅读 · 0 评论 -
LeetCode206 反转链表 2018.11.19
题干:Reverse a singly linked list.Example:Input: 1->2->3->4->5->NULLOutput: 5->4->3->2->1->NULLFollow up:A linked list can be reversed either iteratively or re...原创 2018-11-19 20:23:23 · 220 阅读 · 0 评论 -
LeetCode92 反转链表II 2018.11.19
题干:Reverse a linked list from position m to n. Do it in one-pass.Note: 1 ≤ m ≤ n ≤ length of list.Example:Input: 1->2->3->4->5->NULL, m = 2, n = 4Output: 1->4->3->2-&...原创 2018-11-19 20:55:14 · 205 阅读 · 0 评论 -
LeetCode108 将有序数组转化为二叉索引树 2018.11.26
题干:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / ...原创 2018-11-26 21:02:04 · 205 阅读 · 0 评论 -
LeetCode74 搜索二维矩阵 2019.5.26
题目:编写一个高效的算法来判断mxn矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。示例1:输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]target = 3输出: true示例2...原创 2019-05-26 15:25:06 · 146 阅读 · 0 评论 -
LeetCode110 平衡二叉树 2019.6.29
题干:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,n...原创 2019-06-29 12:02:00 · 156 阅读 · 0 评论 -
LeetCode38 报数 2018.4.22
题干:报数序列是指一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作 "one 2", "one 1" ("一个二原创 2018-04-22 13:50:57 · 199 阅读 · 0 评论