
leetcode
ph3636
这个作者很懒,什么都没留下…
展开
-
leetcode-80-删除排序数组中的重复项 II
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。...原创 2020-01-01 15:50:09 · 195 阅读 · 0 评论 -
leetcode-78-子集
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]迭代方式,首先结果只有一个空集合,...原创 2020-01-01 15:49:36 · 144 阅读 · 0 评论 -
leetcode-60-第k个排列
给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:"123""132""213""231""312""321"给定 n 和 k,返回第 k 个排列。说明:给定 n 的范围是 [1, 9]。给定 k 的范围是[1, n!]。示例 1:...原创 2019-11-16 14:03:56 · 173 阅读 · 0 评论 -
leetcode-77-组合
给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]深度优先搜索DFS,每遍历一个数字就往集合中添加,当集合中的数字达到对应的k个时,就保存到结果集合中,直接...原创 2019-11-16 14:02:39 · 145 阅读 · 0 评论 -
leetcode-70-爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入:2输出:2解释:有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入:3输出:3解释:有三种方法可以爬到楼顶。1. ...原创 2019-11-16 14:02:08 · 128 阅读 · 0 评论 -
leetcode-69-x 的平方根
实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。直接用...原创 2019-11-16 14:00:53 · 249 阅读 · 0 评论 -
leetcode-67-二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"从字符串尾部开始向前遍历,以最长的为准,超出长度的字符按0处理,对应的数字字符减去字...原创 2019-11-16 13:59:39 · 133 阅读 · 0 评论 -
leetcode-66-加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解...原创 2019-11-16 13:58:26 · 138 阅读 · 0 评论 -
leetcode-64-最小路径和
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。使用动态规划,从右下角开始,各个位置的最小路径权值存...原创 2019-11-16 13:57:57 · 132 阅读 · 0 评论 -
leetcode-61-旋转链表
给定一个链表,旋转链表,将链表每个节点向右移动 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 ...原创 2019-11-16 13:57:20 · 153 阅读 · 0 评论 -
leetcode-59-螺旋矩阵 II
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]最外层所有元素按照顺时针顺序输出,其次是次外层,假设当前层左上角坐标是(r1,c1),右下角坐标是(r2,c2),判断每一层是否有四层边(r...原创 2019-11-16 13:55:23 · 163 阅读 · 0 评论 -
leetcode-58-最后一个单词的长度
给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5从字符串结尾开始遍历,遇到第一个非空字符说明已经遍历到最后一个单词的结尾,设置开始标志,统计长度,下一次遇到空字符说明已...原创 2019-11-04 11:04:04 · 110 阅读 · 0 评论 -
leetcode-56-合并区间
给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5]...原创 2019-10-18 11:29:16 · 228 阅读 · 0 评论 -
leetcode-55-跳跃游戏
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无...原创 2019-10-18 11:28:11 · 231 阅读 · 1 评论 -
leetcode-54-螺旋矩阵
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8],...原创 2019-10-18 11:27:34 · 205 阅读 · 0 评论 -
leetcode-151-翻转字符串里的单词
给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: "the sky is blue"输出: "blue is sky the"示例 2:输入: " hello world! "输出: "world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: "a...原创 2019-10-18 11:26:55 · 118 阅读 · 0 评论 -
leetcode-53-最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。每往后移动一位,就取前面...原创 2019-10-18 11:26:21 · 92 阅读 · 0 评论 -
leetcode-48-旋转图像
给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix =[ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4...原创 2019-10-18 11:25:49 · 96 阅读 · 0 评论 -
leetcode-47-全排列 II
给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]先给数组进行排序,递归的退出条件为遍历结束,也就是当前下标已经超过数组限制,把数组中的元素保存到结果中,每个元素都需要存在任何一个位置,不用额外的空间保存结果,直接交换数组元素来达到不同的排...原创 2019-10-18 11:25:14 · 102 阅读 · 0 评论 -
leetcode-46-全排列
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]递归的退出条件为遍历结束,也就是当前下标已经超过数组限制,把数组中的元素保存到结果中,每个元素都需要存在任何一个位置,不...原创 2019-10-12 18:21:43 · 113 阅读 · 0 评论 -
leetcode-45-跳跃游戏 II
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。说明...原创 2019-10-12 18:21:14 · 145 阅读 · 0 评论 -
leetcode-41-缺失的第一个正数
给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。不能对数组进行排序,只能一次遍历,所以可...原创 2019-10-12 18:20:26 · 119 阅读 · 0 评论 -
leetcode-24-两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.递归:因为要交换两个节点,所以当前节点或者当前节点的后继节点为空时就是递归的结束条件,取出当前节点的后继节点,让当前...原创 2019-09-07 20:11:31 · 170 阅读 · 0 评论 -
leetcode-206-反转链表
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?迭代:定义一个标志节点,充当反转后的尾结点,遍历链表,结束条件为头结点为空,获取next节点,然后把头结点的next节点替...原创 2019-09-02 17:29:47 · 95 阅读 · 0 评论 -
leetcode-40-组合总和 II
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], targ...原创 2019-09-09 10:10:14 · 123 阅读 · 0 评论 -
leetcode-107-二叉树的层次遍历 II
给定一个二叉树,返回其节点值自底向上的层次遍历。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]...原创 2019-09-02 17:33:44 · 189 阅读 · 0 评论 -
leetcode-102-二叉树的层次遍历
给定一个二叉树,返回其按层次遍历的节点值。(即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]递归:每一层都需要一个集合来存储...原创 2019-09-02 17:33:00 · 90 阅读 · 0 评论 -
leetcode-145-二叉树的后序遍历
给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗?遍历顺序为左右中递归:从根节点开始,一直遍历它的左节点,直到节点为空时返回上一层,当前节点也就是中间节点,继续遍历该节点的右...原创 2019-09-02 17:32:05 · 193 阅读 · 0 评论 -
leetcode-144-二叉树的前序遍历
给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?遍历顺序为中左右递归:从根节点开始,添加当前节点的值,然后遍历它的左节点,直到节点为空时返回上一层,当前节点也就是中间节点...原创 2019-09-02 17:31:22 · 167 阅读 · 1 评论 -
leetcode-94-二叉树的中序遍历
给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?遍历顺序为左中右递归:从根节点开始,一直遍历它的左节点,直到节点为空时返回上一层,当前节点也就是中间节点,然后添加当前节点值,继续遍...原创 2019-09-02 17:30:39 · 109 阅读 · 0 评论 -
leetcode-148-排序链表
在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5可以采用快速排序的方式,因为单链表不...原创 2019-09-01 14:39:17 · 117 阅读 · 0 评论 -
leetcode-4-寻找两个有序数组的中位数
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]n...原创 2019-09-01 14:38:36 · 155 阅读 · 0 评论 -
leetcode-3-无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3...原创 2019-09-01 14:35:17 · 83 阅读 · 0 评论 -
leetcode-2-两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出...原创 2019-09-01 14:33:22 · 154 阅读 · 0 评论 -
leetcode-103-二叉树的锯齿形层次遍历
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20,9], [15,7]]...原创 2019-09-02 17:34:16 · 153 阅读 · 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]]...原创 2019-09-07 20:05:55 · 102 阅读 · 0 评论 -
leetcode-39-组合总和
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [2,3,6,7], targe...原创 2019-09-09 10:09:32 · 191 阅读 · 0 评论 -
leetcode-34-在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums ...原创 2019-09-09 10:08:01 · 135 阅读 · 0 评论 -
leetcode-33-搜索旋转排序数组
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums...原创 2019-09-09 10:07:30 · 119 阅读 · 0 评论 -
leetcode-25-K 个一组翻转链表
给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k ...原创 2019-09-09 10:06:59 · 120 阅读 · 0 评论