
C
文章平均质量分 76
Liao_Hong_XiDian
这个作者很懒,什么都没留下…
展开
-
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 · 385 阅读 · 0 评论 -
Leetcode:68. 文本左右对齐
给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ' ' 填充,使得每行恰好有 maxWidth 个字符。要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。...原创 2018-10-31 19:35:27 · 270 阅读 · 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 · 198 阅读 · 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 · 190 阅读 · 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 · 282 阅读 · 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 · 154 阅读 · 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 · 180 阅读 · 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 · 110 阅读 · 0 评论 -
Leetcode:67. 二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"解题思路:和字符串相加的算法一致,考虑进位,只不过对2求余。如果连这个都不会,。。。,那就看下面代码。原创 2018-10-30 23:59:05 · 143 阅读 · 0 评论 -
Leetcode:63. 不同路径 II
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[ ...原创 2018-10-31 00:48:04 · 171 阅读 · 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 · 105 阅读 · 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 · 192 阅读 · 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 · 151 阅读 · 0 评论 -
Leetcode:79. 单词搜索
给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABCCE...原创 2018-11-01 20:26:46 · 424 阅读 · 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 · 262 阅读 · 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 · 189 阅读 · 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 · 137 阅读 · 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 · 115 阅读 · 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 · 195 阅读 · 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 · 119 阅读 · 0 评论 -
Leetcode:92. 反转链表 II
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL解题思路:1.方便起见创建一个新的结点head1指向初始的表头。2.*p从head1开始...原创 2018-11-04 11:09:05 · 130 阅读 · 0 评论 -
Leetcode:53. 最大子序和(动态规划+分治法)
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。解题思路:虽然这个简单题,但是我还是想了很久才明白其中的...原创 2018-11-02 11:57:34 · 1240 阅读 · 0 评论 -
Leetcode:93复原IP地址
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例:输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]解题思路:寻找所有可能的IP地址。1. 首先要明白IP地址的概念,4个数字,范围是[0-255]闭区间。2. IP地址的4个数字中,除0以外,所有数字不能以0开头,这就意味着例如"25...原创 2018-11-04 13:56:09 · 195 阅读 · 0 评论 -
Leetcode:100. 相同的树
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 ...原创 2018-11-04 14:51:44 · 116 阅读 · 0 评论 -
Leetcode:94.二叉树的中序遍历
给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]解题思路:一般的数据结构书上都有,递归实现较为容易。 C++代码 class Solution { public: vector...原创 2018-11-04 15:16:52 · 141 阅读 · 0 评论 -
Leetcode:65. 有效数字
验证给定的字符串是否为数字。例如:"0" => true" 0.1 " => true"abc" => false"1 a" => false"2e10" => true说明: 我们有意将问题陈述地比较模糊。在实现代码之前,你应当事先思考所有可能的情况。更新于 2015-02-10:C++函数的形式已经更新了。如果你仍然看见你的原创 2018-11-02 15:29:30 · 222 阅读 · 0 评论 -
Leetcode:82. 删除排序链表中的重复元素 II
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3解题思路:1. 判断结果是否可能为空。如果为空那么直接retur...原创 2018-11-02 17:45:48 · 186 阅读 · 0 评论 -
Leetcode:101.对称二叉树
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [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-11-04 20:55:55 · 197 阅读 · 0 评论 -
Leetcode:102. 二叉树的层次遍历
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]解题思路:广度优先搜索(BFS)。C++代码 clas...原创 2018-11-04 21:15:51 · 194 阅读 · 0 评论 -
Leetcode:96.不同的二叉搜索树&&Leetcode:95.不同的二叉搜索树II
Leetcode:96.不同的二叉搜索树给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 ...原创 2018-11-12 22:08:20 · 284 阅读 · 0 评论 -
Leetcode:108.将有序数组转换为二叉搜索树&&Leetcode:109.将有序链表转换成二叉搜索树
Leetcode:108.将有序数组转换为二叉搜索树将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 ...原创 2018-11-12 22:46:52 · 314 阅读 · 0 评论 -
Leetcode:103. 二叉树的锯齿形层次遍历
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20,9], [15,7]]解题思路:解题的大致思...原创 2018-11-05 10:58:55 · 212 阅读 · 0 评论 -
Leetcode:104. 二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。解题思路:递归。从根节点开始访问,当前深度为1。递归查询左子树的最大深度d...原创 2018-11-05 14:21:39 · 169 阅读 · 1 评论 -
Leetcode:107.二叉树的层次遍历
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]解题思路:二叉树的层次遍历+反...原创 2018-11-05 14:43:33 · 203 阅读 · 0 评论 -
Leetcode:111.二叉树的最小深度
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.解题思路:递归。从根节点开始,寻找他的左子树的深度depth_left,...原创 2018-11-05 15:16:31 · 165 阅读 · 0 评论 -
Leetcode:112.路径总和
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...原创 2018-11-05 16:07:05 · 145 阅读 · 0 评论 -
Leetcode:113. 路径总和II
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ ...原创 2018-11-05 16:50:45 · 184 阅读 · 0 评论 -
Leetcode:114. 二叉树展开为链表
给定一个二叉树,原地将它展开为链表。例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为:1 \ 2 \ 3 \ 4 \ 5 \ 6解题思路:最近做了较多的二叉树题目,感觉使用递归的话会变得贼简单,其实细想一下...原创 2018-11-05 18:32:08 · 216 阅读 · 0 评论 -
Leetcode:129.求根到叶子节点数字之和
给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 25解释:从根到叶子节点路径 1->2代...原创 2018-11-05 19:02:22 · 246 阅读 · 0 评论 -
Leetcode:144.二叉树的先序遍历
给定一个二叉树,返回它的 前序 遍历。 示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]解题思路:先序遍历:1.访问根节点。2.访问左子树。3.访问右子树。C++代码 class Solution { public: vector<int> preorderT...原创 2018-11-05 19:29:51 · 203 阅读 · 0 评论