2018年12月23日

摘要: 验证回文串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: 阅读全文
posted @ 2018-12-23 10:10 kexinxin 阅读(87) 评论(0) 推荐(0)
摘要: 124.二叉树中的最大路径和 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1: 输入: [1,2,3] 输出: 6 示例 2: 输入: [-10,9,20,null,null,15,7] 阅读全文
posted @ 2018-12-23 00:59 kexinxin 阅读(122) 评论(0) 推荐(0)
摘要: 买卖股票的最佳时机III 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入: [3,3,5,0,0,3,1,4] 输出: 阅读全文
posted @ 2018-12-23 00:58 kexinxin 阅读(123) 评论(0) 推荐(0)
摘要: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入: [7,1,5,3,6,4] 输出: 7 解释: 在第 阅读全文
posted @ 2018-12-23 00:57 kexinxin 阅读(116) 评论(0) 推荐(0)
摘要: 不同的子序列 给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是) 示例 1: 输入: S = 阅读全文
posted @ 2018-12-23 00:55 kexinxin 阅读(101) 评论(0) 推荐(0)
摘要: 买卖股票的最佳时机 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股 阅读全文
posted @ 2018-12-23 00:55 kexinxin 阅读(96) 评论(0) 推荐(0)
摘要: 二叉树展开为链表 给定一个二叉树,原地将它展开为链表。 例如,给定二叉树 将其展开为: 阅读全文
posted @ 2018-12-23 00:54 kexinxin 阅读(110) 评论(0) 推荐(0)
摘要: 将有序数组转化为二叉搜索树 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它 阅读全文
posted @ 2018-12-23 00:52 kexinxin 阅读(135) 评论(0) 推荐(0)
摘要: 从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树。 注意:你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3] 返回如下的二叉树: 3 / \ 9 20 / \ 15 阅读全文
posted @ 2018-12-23 00:51 kexinxin 阅读(105) 评论(0) 推荐(0)
摘要: 对称二叉树 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 说明: 如果你可以运用递归和迭代两种方法解决这个问题,会很加分。 阅读全文
posted @ 2018-12-23 00:50 kexinxin 阅读(76) 评论(0) 推荐(0)
摘要: 搜索旋转排序数组 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时 阅读全文
posted @ 2018-12-23 00:48 kexinxin 阅读(99) 评论(0) 推荐(0)
摘要: 恢复二叉搜索树 二叉搜索树中的两个节点被错误地交换。 请在不改变其结构的情况下,恢复这棵树。 示例 1: 输入: [1,3,null,null,2] 输出: [3,1,null,null,2] 示例 2: 输入: [3,1,4,null,null,2] 输出: [2,1,4,null,null,3] 阅读全文
posted @ 2018-12-23 00:45 kexinxin 阅读(171) 评论(0) 推荐(0)
摘要: 不同的二叉搜索树 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 动态规划问题,自己看了题目之后感觉无从下手,还是去看了网上的解题报告。。。。。 大概是这个意思: 给出的n代表 阅读全文
posted @ 2018-12-23 00:44 kexinxin 阅读(118) 评论(0) 推荐(0)
摘要: 验证二叉搜索树 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入: 输出: true 示例 2: 输入: 输出: false 阅读全文
posted @ 2018-12-23 00:44 kexinxin 阅读(103) 评论(0) 推荐(0)
摘要: 不同的二叉搜索树2 给定一个整数 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] ] 解释: 以上的输出对应 阅读全文
posted @ 2018-12-23 00:43 kexinxin 阅读(113) 评论(0) 推荐(0)
摘要: 复制IP地址 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 示例: 输入: "25525511135" 输出: ["255.255.11.135", "255.255.111.35"] 阅读全文
posted @ 2018-12-23 00:42 kexinxin 阅读(153) 评论(0) 推荐(0)
摘要: 92.反转链表 反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明:1 ≤ m ≤ n ≤ 链表长度。 示例: 输入: 1->2->3->4->5->NULL, m = 2, n = 4 输出: 1->4->3->2->5->NULL 详解见图: 阅读全文
posted @ 2018-12-23 00:41 kexinxin 阅读(89) 评论(0) 推荐(0)
摘要: 格雷编码 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。 示例 1: 输入: 2 输出: [0,1,3,2] 解释: 00 - 0 01 - 1 11 - 3 10 - 2 对于给 阅读全文
posted @ 2018-12-23 00:39 kexinxin 阅读(109) 评论(0) 推荐(0)
摘要: 子集 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: [1,2,2] 输出: [ [2], [1], [1,2,2], [2,2], [1,2], [] ] 阅读全文
posted @ 2018-12-23 00:39 kexinxin 阅读(99) 评论(0) 推荐(0)
摘要: 扰乱字符串 给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树。 下图是字符串 s1 = "great" 的一种可能的表示形式。 在扰乱这个字符串的过程中,我们可以挑选任何一个非叶节点,然后交换它的两个子节点。 例如,如果我们挑选非叶节点 "gr" ,交换它的两个子 阅读全文
posted @ 2018-12-23 00:37 kexinxin 阅读(311) 评论(0) 推荐(0)
摘要: 分隔链表 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。 你应当保留两个分区中每个节点的初始相对位置。 示例: 输入: head = 1->4->3->2->5->2, x = 3 输出: 1->2->2->4->3->5 阅读全文
posted @ 2018-12-23 00:36 kexinxin 阅读(94) 评论(0) 推荐(0)
摘要: 删除重复数组的重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定 nums = [1,1,1,2,2,3], 函数应返回新长度 le 阅读全文
posted @ 2018-12-23 00:35 kexinxin 阅读(118) 评论(0) 推荐(0)
摘要: 单词搜索 给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: board = [ ['A','B','C','E'], ['S','F','C 阅读全文
posted @ 2018-12-23 00:34 kexinxin 阅读(118) 评论(0) 推荐(0)
摘要: 子集 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 阅读全文
posted @ 2018-12-23 00:33 kexinxin 阅读(105) 评论(0) 推荐(0)
摘要: 组合 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 采用回溯算法。这是一道 NP 难问题,时间复杂度没办法提高,用一个循环递 阅读全文
posted @ 2018-12-23 00:32 kexinxin 阅读(106) 评论(0) 推荐(0)
摘要: 最小覆盖子串 给定一个字符串 S 和一个字符串 T,请在 S 中找出包含 T 所有字母的最小子串。 示例: 输入: S = "ADOBECODEBANC", T = "ABC" 输出: "BANC" 说明: 如果 S 中不存这样的子串,则返回空字符串 ""。 如果 S 中存在这样的子串,我们保证它是 阅读全文
posted @ 2018-12-23 00:31 kexinxin 阅读(169) 评论(0) 推荐(0)
摘要: 搜索二维矩阵 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1: 输入: matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30 阅读全文
posted @ 2018-12-23 00:30 kexinxin 阅读(138) 评论(0) 推荐(0)
摘要: 文本左右对齐 给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。 你应该使用"贪心算法"来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ' ' 填充,使得每行恰好有 maxWidth 个字符。 要求 阅读全文
posted @ 2018-12-23 00:28 kexinxin 阅读(177) 评论(0) 推荐(0)
摘要: 第k个排列 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: 给定 n 和 k,返回第 k 个排列。 说明: 给定 n 的范围是 [1, 9]。 给定 k 的范围是[1, n!]。 示例 1: 输入: n 阅读全文
posted @ 2018-12-23 00:27 kexinxin 阅读(124) 评论(0) 推荐(0)
摘要: 跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 输入: [2,3,1,1,4] 输出: true 解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。 给定一个非负整 阅读全文
posted @ 2018-12-23 00:26 kexinxin 阅读(114) 评论(0) 推荐(0)
摘要: 螺旋矩阵 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例 1: 阅读全文
posted @ 2018-12-23 00:25 kexinxin 阅读(130) 评论(0) 推荐(0)
摘要: N后问题 n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 上图为 8 皇后问题的一种解法。 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。 每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后 阅读全文
posted @ 2018-12-23 00:23 kexinxin 阅读(119) 评论(0) 推荐(0)
摘要: 字母异位词分组 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"], 输出: [ ["ate","eat","tea"], ["nat","tan"], ["ba 阅读全文
posted @ 2018-12-23 00:21 kexinxin 阅读(141) 评论(0) 推荐(0)
摘要: 旋转矩阵 给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 示例 1: 给定 matrix = [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入 阅读全文
posted @ 2018-12-23 00:20 kexinxin 阅读(191) 评论(0) 推荐(0)
摘要: 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。 示例: 输入: [ 阅读全文
posted @ 2018-12-23 00:19 kexinxin 阅读(174) 评论(0) 推荐(0)
摘要: 缺失的第一个正数 给定一个未排序的整数数组,找出其中没有出现的最小的正整数。 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: 输入: [7,8,9,11,12] 输出: 1 说明: 你的算法的时间复杂度应为O(n),并且只能使用常数级 阅读全文
posted @ 2018-12-23 00:18 kexinxin 阅读(163) 评论(0) 推荐(0)
摘要: 组合总数 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。 解集不能包含重复的组合。 示例  阅读全文
posted @ 2018-12-23 00:15 kexinxin 阅读(117) 评论(0) 推荐(0)
摘要: 在排序数组中查找元素的第一个和最后一个位置 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。 示例 1: 输入: nums = [5 阅读全文
posted @ 2018-12-23 00:14 kexinxin 阅读(111) 评论(0) 推荐(0)
摘要: 搜索旋转排序数组 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时 阅读全文
posted @ 2018-12-23 00:12 kexinxin 阅读(95) 评论(0) 推荐(0)
摘要: 最长有效括号 给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。 示例 1: 输入: "(()" 输出: 2 解释: 最长有效括号子串为 "()" 示例 2: 输入: ")()())" 输出: 4 解释: 最长有效括号子串为 "()()" 设置两个指针,一个表示左括号 阅读全文
posted @ 2018-12-23 00:11 kexinxin 阅读(122) 评论(0) 推荐(0)
摘要: 下一个排列 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。 以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2, 阅读全文
posted @ 2018-12-23 00:10 kexinxin 阅读(74) 评论(0) 推荐(0)
摘要: 与所有单词相关联的字串 给定一个字符串 s 和一些长度相同的单词 words。在 s 中找出可以恰好串联 words 中所有单词的子串的起始位置。 注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。 示例 1: 输入: s = "barfoo 阅读全文
posted @ 2018-12-23 00:06 kexinxin 阅读(202) 评论(0) 推荐(0)
摘要: K个一组翻转链表 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。 示例 : 给定这个链表:1->2->3->4->5 当 k = 2 时,应当返回: 2->1->4->3- 阅读全文
posted @ 2018-12-23 00:02 kexinxin 阅读(89) 评论(0) 推荐(0)
摘要: 两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 阅读全文
posted @ 2018-12-23 00:01 kexinxin 阅读(99) 评论(0) 推荐(0)

导航