随笔分类 -  Algorithm

程序=算法+数据结构
摘要:Medium! 题目描述: 给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。 示例: 解题思路: 这种建树问题一般来说都是用递归来解,这道题也不例外,划分左右子树,递归构造。至于递归函数中为啥都用的是指针,是参考了http://fisherlei.blogspot.com/2 阅读全文
posted @ 2018-06-09 15:35 Ariel_一只猫的旅行 阅读(3058) 评论(0) 推荐(0)
摘要:Medium! 题目描述: 给定一个二叉树,返回它的中序 遍历。 示例: 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 解题思路: 二叉树的中序遍历顺序为左-根-右,可以有递归和非递归来解,其中非递归解法又分为两种,一种是使用栈来解,另一种不需要使用栈。我们先来看递归方法,十分直接,对左子结点 阅读全文
posted @ 2018-06-09 15:24 Ariel_一只猫的旅行 阅读(2325) 评论(0) 推荐(0)
摘要:Medium! 题目描述: 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 示例: 解题思路: IP地址由32位二进制数组成,为便于使用,常以XXX.XXX.XXX.XXX形式表现,每组XXX代表小于或等于255的10进制数。所以说IP地址总共有四段,每一段可能有一位,两位或者 阅读全文
posted @ 2018-06-09 15:16 Ariel_一只猫的旅行 阅读(4184) 评论(0) 推荐(3)
摘要:Medium! 题目描述: 反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明:1 ≤ m ≤ n ≤ 链表长度。 示例: 输入: 1->2->3->4->5->NULL, m = 2, n = 4 输出: 1->4->3->2->5->NULL 反转从位置 m 到 n 的链表。请使用一 阅读全文
posted @ 2018-06-09 15:08 Ariel_一只猫的旅行 阅读(1339) 评论(0) 推荐(1)
摘要:Medium! 题目描述: 一条包含字母 A-Z 的消息通过以下方式进行了编码: 给定一个只包含数字的非空字符串,请计算解码方法的总数。 示例 1: 示例 2: 解题思路: 这道题要求解码方法,跟之前那道 Climbing Stairs 爬梯子问题 非常的相似,但是还有一些其他的限制条件,比如说一位 阅读全文
posted @ 2018-06-09 14:57 Ariel_一只猫的旅行 阅读(3349) 评论(0) 推荐(1)
摘要:Medium! 题目描述: 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 解题思路: 这道子集合之二是之前那道 Subsets 子集合 的延伸,这次输入数组允许有重复项,其他条件都不变,只需要在之前那道题解法的基础上稍加改动 阅读全文
posted @ 2018-06-09 14:48 Ariel_一只猫的旅行 阅读(848) 评论(0) 推荐(0)
摘要:Medium! 题目描述: 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。 给定一个代表编码总位数的非负整数 n,打印格雷码序列。格雷码序列必须以 0 开头。 例如,给定 n = 2,返回 [0,1,3,2]。其格雷编码是: 00 - 0 01 - 1 11 - 3 1 阅读全文
posted @ 2018-06-09 14:44 Ariel_一只猫的旅行 阅读(1269) 评论(0) 推荐(0)
摘要:Easy! 题目描述: 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保 阅读全文
posted @ 2018-06-09 14:19 Ariel_一只猫的旅行 阅读(3029) 评论(0) 推荐(2)
摘要:Hard! 题目描述: 给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树。 下图是字符串 s1 = "great" 的一种可能的表示形式。 在扰乱这个字符串的过程中,我们可以挑选任何一个非叶节点,然后交换它的两个子节点。 例如,如果我们挑选非叶节点 "gr" ,交 阅读全文
posted @ 2018-06-09 14:11 Ariel_一只猫的旅行 阅读(2770) 评论(0) 推荐(0)
摘要:Medium! 题目描述: 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。 你应当保留两个分区中每个节点的初始相对位置。 示例: 解题思路: 这道题要求我们划分链表,把所有小于给定值的节点都移到前面,大于该值的节点顺序不变,相当于一个局部排序的 阅读全文
posted @ 2018-06-09 13:58 Ariel_一只猫的旅行 阅读(1935) 评论(0) 推荐(0)
摘要:Hard! 题目描述: 给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 示例: 输入: [ ["1","0","1","0","0"], ["1","0","1","1","1"], ["1","1","1","1","1"], ["1& 阅读全文
posted @ 2018-06-09 13:47 Ariel_一只猫的旅行 阅读(3385) 评论(0) 推荐(0)
摘要:Hard! 题目描述: 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。 图中阴影部分为所能勾勒出的最大矩形面积,其面积为 阅读全文
posted @ 2018-06-09 13:40 Ariel_一只猫的旅行 阅读(4109) 评论(0) 推荐(0)
摘要:Easy! 题目描述: 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 示例 2: 解题思路: 移除有序链表中的重复项需要定义个指针指向该链表的第一个元素,然后第一个元素和第二个元素比较,如果重复了,则删掉第二个元素,如果不重复,指针指向第二个元素。这样遍历完整个链表,则 阅读全文
posted @ 2018-06-09 13:24 Ariel_一只猫的旅行 阅读(1496) 评论(0) 推荐(0)
摘要:Medium! 题目描述: 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 示例 2: 解题思路: 和之前那道 (http://www.cnblogs.com/grandyang/p/4066453.html) 不同的地方是这里要删掉所有的重复项, 阅读全文
posted @ 2018-06-09 13:17 Ariel_一只猫的旅行 阅读(3232) 评论(0) 推荐(0)
摘要:Medium! 题目描述: 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。 编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。 示例 1: 输入: num 阅读全文
posted @ 2018-06-09 13:00 Ariel_一只猫的旅行 阅读(1727) 评论(0) 推荐(0)
摘要:Medium! 题目描述: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 示例 2: 说明: 为什么返回数值是整数,但输出的答案是数组呢? 阅读全文
posted @ 2018-06-08 11:27 Ariel_一只猫的旅行 阅读(555) 评论(0) 推荐(0)
摘要:Medium! 题目描述: 给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: 解题思路: 这道题是典型的深度优先遍历DFS的应用,原二维数组 阅读全文
posted @ 2018-06-08 11:22 Ariel_一只猫的旅行 阅读(679) 评论(0) 推荐(0)
摘要:Medium! 题目描述: 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 解题思路: 这道求子集合的问题,由于其要列出所有结果,按照以往的经验,肯定是要用递归来做。这道题其实它的非递归解法相对来说更简单一点,下面我们先来看非递归 阅读全文
posted @ 2018-06-08 10:55 Ariel_一只猫的旅行 阅读(2374) 评论(0) 推荐(1)
摘要:Medium! 题目描述: 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 示例: 解题思路: 这道题让求1到n共n个数字里k个数的组合数的所有情况,还是要用深度优先搜索DFS来解,根据以往的经验,像这种要求出所有结果的集合,一般都是用DFS调用递归来解。那么我们建立 阅读全文
posted @ 2018-06-08 10:46 Ariel_一只猫的旅行 阅读(443) 评论(0) 推荐(0)
摘要:Hard! 题目描述: 给定一个字符串 S 和一个字符串 T,请在 S 中找出包含 T 所有字母的最小子串。 示例: 说明: 如果 S 中不存这样的子串,则返回空字符串 ""。 如果 S 中存在这样的子串,我们保证它是唯一的答案。 解题思路: 这道题的要求是要在O(n)的时间度里实现找到这个最小窗口 阅读全文
posted @ 2018-06-08 10:35 Ariel_一只猫的旅行 阅读(2448) 评论(0) 推荐(0)