分治
DEUSJIN
这个作者很懒,什么都没留下…
展开
-
Count of Range Sum(区间和的个数)(困难)分治、归并
题目:给定一个整数数组 nums,返回区间和在 [lower, upper] 之间的个数,包含 lower 和 upper。区间和 S(i, j) 表示在 nums 中,位置从 i 到 j 的元素之和,包含 i 和 j (i ≤ j)。说明:最直观的算法复杂度是 O(n2) ,请在此基础上优化你的算法。示例:输入: nums = [-2,5,-1], lower = -2, upper ...原创 2020-02-28 12:13:30 · 373 阅读 · 0 评论 -
Count of Smaller Numbers After Self(计算右侧小于当前元素的个数)(困难)归并,分治
题目:给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。来源:力扣(LeetCode)利用归并排序的思想。每当右侧元素放入临时数组时,tmp。而当左侧元素放入临时数组时,在相应的counter位置处加上tmp。为了保证元素的顺序,我们用一个索引数组来进行归...原创 2020-02-25 14:07:21 · 160 阅读 · 0 评论 -
Burst Balloons(戳气球)(困难)(回溯)(动态规划)
题目:有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。每当你戳破一个气球 i 时,你可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻的两个气球的序号。注意当你戳破了气球 i 后,气球 left 和气球 right 就变成了相邻的气...原创 2020-02-24 15:07:34 · 581 阅读 · 0 评论 -
寻找两个有序数组的中位数(困难)非常酷的解决方案!
题目:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 ...原创 2020-02-15 17:23:48 · 211 阅读 · 0 评论 -
面试题36. 二叉搜索树与双向链表(分治)(递归)
题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图展示了上面的二叉搜索树转化成的链表。“head...原创 2020-02-14 12:58:36 · 584 阅读 · 0 评论 -
最接近原点的 K 个点(分治)(递归)(快排)
题目:我们有一个由平面上的点组成的列表 points。需要从中找出 K 个距离原点 (0, 0) 最近的点。(这里,平面上两点之间的距离是欧几里德距离。)你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。来源:力扣(LeetCode)法一:排序O(nlogn)法二:利用快排的思想解决问题想法十分简单,每一次partition比较归位元素的位置j与K-1大小:(1)...原创 2020-02-14 10:36:46 · 334 阅读 · 0 评论