摘要:
一:解题思路 方法一:之前做过一道合并2个链表的题目,那么第一种方法就是将数组中的链表两两合并,得到最后的结果。Time:O(k*n),Space:O(1) 方法二:采用分治法,两两合拼。不断递归,最后只剩下一个链表。Time:O(n*log(k)),Space:O(log(k)) 二:完整代码示例 阅读全文
posted @ 2020-04-13 21:47
repinkply
阅读(187)
评论(0)
推荐(0)
摘要:
一:解题思路 方法一:使用一个辅助集合。Time:O(n),Space:O(n) 方法二:快慢指针法。Time:O(n),Space:O(1) 二:完整代码示例 (C++版和Java版) 方法一C++: class Solution { public: ListNode *detectCycle(L 阅读全文
posted @ 2020-04-13 20:38
repinkply
阅读(203)
评论(0)
推荐(0)
摘要:
一:解题思路 解题的关键之处在于:对于一个已经递增排序好的数组,从左往右本来就是递增的,从右往左本来就是递减的。我们只需要找到第一次不满足这2个条件的下标 i和j,然后基于这两个下标 i和j,分别向两边扩展,确定最短长度。 记住这个例子:02418 方法一:Time:O(n*log(n)),Spac 阅读全文
posted @ 2020-04-13 17:53
repinkply
阅读(124)
评论(0)
推荐(0)
摘要:
一:解题思路 Time:O(h),Space:O(h),h为树的高度 二:完整代码示例 (C++版和Java版) C++: class Solution { public: TreeNode* deleteNode(TreeNode* root, int key) { if (root == NUL 阅读全文
posted @ 2020-04-13 16:44
repinkply
阅读(145)
评论(0)
推荐(0)
摘要:
一:解题思路 这个题目是二分搜索的一道变形题目。比较关键的一点是,需要判断mid是落在左边的子数组上,还是落在右边的子数组上。 Time:O(log(n)),Space:O(1) 二:完整代码示例 (C++版和Java版) C++: class Solution { public: int sear 阅读全文
posted @ 2020-04-13 15:55
repinkply
阅读(158)
评论(0)
推荐(0)
摘要:
一:解题思路 Time:O(log(n)),Space:O(1) 二:完整代码示例 (C++版和Java版) C++: class Solution { private: int binarySearchLastOne(vector<int>& nums, int target) { int low 阅读全文
posted @ 2020-04-13 13:09
repinkply
阅读(238)
评论(0)
推荐(0)

浙公网安备 33010602011771号