![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode
文章平均质量分 76
Liao_Hong_XiDian
这个作者很懒,什么都没留下…
展开
-
Leetcode:4. 两个排序数组的中位数
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。你可以假设 nums1 和 nums2 不同时为空。示例 1:nums1 = [1, 3]nums2 = [2]中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]中位数是 (...原创 2018-10-29 11:01:18 · 109 阅读 · 0 评论 -
Leetcode:46. 全排列
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解题思路:DFS;对于3个数的数组而言,有人可能会想到用3层for能够实现,而DFS就是处理个数未知的组合问题,当递归访问的元素个数达到原数组规模的时候,存...原创 2018-10-29 12:30:10 · 132 阅读 · 0 评论 -
Leetcode:47. 全排列II
给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]解题思路:DFS,桶排序。由于数组中可能包含相同数字,采用了排序+制桶,然后进行DFS。例如: 排序后的数组为nums=[1,1,2,2,2,3,3,4,4,5,6,6,6],他对应的桶如下:vector<...原创 2018-10-29 13:43:35 · 349 阅读 · 0 评论 -
Leetcode:36. 有效的数独
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 '.' 表示。示例 1:输入:[ ["5","3",".",".","...原创 2018-10-26 13:14:01 · 162 阅读 · 0 评论 -
Leetcode:48. 旋转图像
给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3...原创 2018-10-29 15:08:23 · 174 阅读 · 0 评论 -
Leetcode:38. 报数
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作 "one 2", "one 1" ("一个原创 2018-10-26 14:14:34 · 98 阅读 · 0 评论 -
Leetcode:39. 数组总和
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。 解集不能包含重复的组合。 示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集为...原创 2018-10-26 15:12:25 · 384 阅读 · 0 评论 -
Leetcode:49. 分母异位词分组
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"],原创 2018-10-29 16:45:27 · 165 阅读 · 0 评论 -
Leetcode:50.Pow(x, n)
实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25解题思路:递归。double的指数范围[-102...原创 2018-10-29 19:42:45 · 189 阅读 · 0 评论 -
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], [9,10,11,12]]...原创 2018-10-29 20:30:34 · 120 阅读 · 0 评论 -
Leetcode:55. 跳跃游戏
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的...原创 2018-10-29 21:38:09 · 207 阅读 · 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] 可被视为重叠区间。...原创 2018-10-29 22:26:23 · 115 阅读 · 0 评论 -
Leetcode:58. 最后一个单词的长度
给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5解题思路:1. 找到最后一个不是空格的字符(字母)的位置pos1,如不到return 0;2. 安全起见,删除pos1之后的字符(空格)。3. ...原创 2018-10-30 09:38:32 · 100 阅读 · 0 评论 -
Leetcode:66.加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321...原创 2018-10-30 09:37:37 · 85 阅读 · 0 评论 -
Leetcode:39. 组合总和II
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。 示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集...原创 2018-10-26 19:52:55 · 97 阅读 · 0 评论 -
Leetcode:51.N皇后&&Leetcode:52. N皇后II
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例:输入: 4输出: [ [".Q..", // 解法 1 "...Q...原创 2018-10-31 15:43:46 · 281 阅读 · 0 评论 -
Leetcode:68. 文本左右对齐
给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ' ' 填充,使得每行恰好有 maxWidth 个字符。要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。...原创 2018-10-31 19:35:27 · 223 阅读 · 0 评论 -
Leetcode:64. 最小路径和
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解题思路:标签法,递推。dp[x][y]=dp[x][y]+min(dp[x][y+1],...原创 2018-10-31 21:14:25 · 168 阅读 · 0 评论 -
Leetcode:73. 矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0], [1,0,1]]示例 2:输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5]]...原创 2018-10-31 21:47:56 · 156 阅读 · 0 评论 -
Leetcode:74. 搜索二维矩阵
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]target = 3输出: true示例 2:输...原创 2018-10-31 22:16:02 · 230 阅读 · 0 评论 -
Leetcode:75. 颜色分类
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。...原创 2018-11-01 00:51:15 · 104 阅读 · 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,这题比较特殊,选择的对象是1-n的整数,有序,写几层循环就能解决问题。但是本人就是喜欢DFS,最近也在狂练...原创 2018-11-01 01:32:53 · 117 阅读 · 0 评论 -
Leetcode:43. 字符串相乘
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例 2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1 和 num2 的长度小于110。 num1 和原创 2018-10-27 12:40:58 · 164 阅读 · 0 评论 -
Leetcode:57. 插入区间
给出一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例 1:输入: intervals = [[1,3],[6,9]], newInterval = [2,5]输出: [[1,5],[6,9]]示例 2:输入: intervals = [[1,2],[3,5],[6,7]...原创 2018-10-30 13:23:00 · 264 阅读 · 0 评论 -
Leetcode:59. 螺旋矩阵 II
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]解题思路:模拟题,将初始位置设置成(0,-1)。初始的移动量R=n,D=n-1,L=n-1,U=n-2。每走完一圈R,D,L,U都减2。当移动的方向没有移动量时,退出循环...原创 2018-10-30 13:59:34 · 165 阅读 · 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:输入: n = 3原创 2018-10-30 15:55:34 · 111 阅读 · 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 步: 4-原创 2018-10-30 16:45:34 · 148 阅读 · 0 评论 -
Leetcode:62. 不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。解题思路:乍一看像是个搜索算法,仔细一想并不是,因为他只能往下或者...原创 2018-10-30 19:06:27 · 128 阅读 · 0 评论 -
Leetcode:67. 二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"解题思路:和字符串相加的算法一致,考虑进位,只不过对2求余。如果连这个都不会,。。。,那就看下面代码。原创 2018-10-30 23:59:05 · 112 阅读 · 0 评论 -
Leetcode:63. 不同路径 II
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[ ...原创 2018-10-31 00:48:04 · 113 阅读 · 0 评论 -
Leetcode:70.爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. ...原创 2018-10-31 01:17:56 · 73 阅读 · 0 评论 -
Leetcode:83. 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3您是否在真实的面试环节中遇到过这道题目呢?解题思路:双指针。C++代码 class Solution { publi...原创 2018-11-03 14:42:49 · 167 阅读 · 0 评论 -
Leetcode:86分隔链表
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5解题思路:创建两个链表head1,head2,遍历hea...原创 2018-11-03 15:18:27 · 126 阅读 · 0 评论 -
Leetcode:79. 单词搜索
给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABCCE...原创 2018-11-01 20:26:46 · 362 阅读 · 0 评论 -
Leetcode:80. 删除排序数组中的重复项 II
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组中超出新长...原创 2018-11-01 21:42:30 · 224 阅读 · 0 评论 -
Leetcode:89. 格雷编码
格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序列并不唯一。例如,[0,2,3,1] 也是一个有效的格雷编码序列。00 -...原创 2018-11-03 19:57:02 · 143 阅读 · 0 评论 -
Leetcode:78. 子集
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]解题思路:组合问题,直接DFS,注意空集是所有集合的子集。分别求解0-nums.siz...原创 2018-11-03 20:26:07 · 101 阅读 · 0 评论 -
Leetcode:90.子集II
给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[ [2], [1], [1,2,2], [2,2], [1,2], []]解题思路:1. 组合问题==>DFS。2. 有重复元素==>数组排序,同一层递归对相同元素只能选取一次。...原创 2018-11-03 20:36:50 · 88 阅读 · 0 评论 -
Leetcode:88.合并两个数组
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 ...原创 2018-11-02 01:02:16 · 146 阅读 · 0 评论 -
Leetcode:91. 解码方法
一条包含字母 A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: "12"输出: 2解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。示例 2:输入: "226"输出: 3解释: 它可以解码为 "BZ&qu原创 2018-11-03 22:04:44 · 89 阅读 · 0 评论