摘要: 问题:给定一个区间集合,整合所有重叠的区间。 对区间集合按照 start 来排序,然后根据 intervals[i].start 和 res.lastElement.end 来整合即可。 阅读全文
posted @ 2015-12-28 00:58 TonyYPZhang 阅读(627) 评论(0) 推荐(0) 编辑
摘要: 问题:给定一个无序数组,找出最长的连续序列,要求时间复杂度为 O(n) 。 一开始想到的是用先排序,再找结果,但是时间复杂度要求 O(n) ,使用排序会超时。 思索未果,再网上找到一个方案,借助 unordered_set 来实现。 阅读全文
posted @ 2015-12-28 00:54 TonyYPZhang 阅读(1368) 评论(0) 推荐(0) 编辑
摘要: 问题: 给定一个集合,求集合元素的所有组合的情况。 实际上就是一题求全组合的题目。 nums[i...n) 的所有组合情况可以分为两种:包含nums[i] 的 和 不包含 nums[i] 的。 阅读全文
posted @ 2015-12-27 13:49 TonyYPZhang 阅读(874) 评论(0) 推荐(0) 编辑
摘要: 问题: 给定一个已排序的数组,该数组以某一个元素作为支点做了旋转,在改旋转后数组中搜索值。 已排序数组的搜索,自然会想到二分搜索。将旋转到后面的部分用负数表示下标,便可以正常使用二分搜索。 阅读全文
posted @ 2015-12-26 22:05 TonyYPZhang 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 问题:给定一个已排序数组和一个整数,若整数已在数组中则返回在数组中的下标,否则返回应当插入的位置。 对一个已排序数组进行搜索,很自然地会想到二分搜索(Binary Search),毕竟是经典场景。这道题也确实是二分搜索的一个简单应用。 之所以记录这道题目,是感觉二分搜索和之前做的 双指针法 two pointers ,或者是滑动窗口算法(sliding window) 有些相似。 阅读全文
posted @ 2015-12-26 11:44 TonyYPZhang 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 问题:给定一个矩阵,当矩阵一个元素为 0 ,将该元素的当前行,当前列都设为 0 。 我的方案满足补充内容的第二点,使用 O(m + n) 额外空间。 阅读全文
posted @ 2015-12-26 10:58 TonyYPZhang 阅读(562) 评论(0) 推荐(0) 编辑
摘要: 问题:在给定的已排序的二维矩阵中,判断是否包含某个整数。 思路:看到二维数组,首先想到的是二维数组和 一维数组可以直接转换,arr[i][j] 等于 arr[i*col + j]。而在一个已排序的一维数组中搜索一个元素,可以采用分治(Divide and Conquer)思想,更具体些就是二分搜索(Binary Search) 算法。 阅读全文
posted @ 2015-12-26 09:34 TonyYPZhang 阅读(535) 评论(0) 推荐(0) 编辑
摘要: 问题:给定一个数组和一个整数 n ,求数组中的三个元素,他们的和离 n 最近。 这道题和 3Sum 很相似,解题思路也很相似,先排序,然后采用双指针法依次比较。 阅读全文
posted @ 2015-12-26 01:45 TonyYPZhang 阅读(1282) 评论(0) 推荐(0) 编辑
摘要: 问题:实现 strStr() 函数。即在 haystack 中匹配 needle 字符串。 可以理解为,实际上这道题是在问如何实现 KMP(Knuth–Morris–Pratt) 算法。 阅读全文
posted @ 2015-12-25 23:51 TonyYPZhang 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 假设要在 haystack 中匹配 needle . 要理解 KMP 先需要理解两个概念 proper prefix 和 proper suffix,由于找到没有合适的翻译,暂时分别称真实前缀 和 真实后缀。 真实前缀(Proper prefix): 一个字符串中至少不包含一个尾部字符的前缀字符串。例如 "Snape" 的全部真实前缀是 “S”, “Sn”, “Sna”, and “Snap” . 真实后缀(Proper suffix): 一个字符串中至少不包含一个头部字符的后缀字符串。例如 “Hagrid” 的全部真实后缀是 “agrid”, “grid”, “rid”, “id”, and “d”. 阅读全文
posted @ 2015-12-25 23:39 TonyYPZhang 阅读(1287) 评论(0) 推荐(0) 编辑