分治
Jaster_wisdom
程序员
展开
-
HDU 1007 (分治递归)
之前做这题用了 讨巧的 方法,竟然也 accept 了,后来举出反例发现 那种解法有问题。 正确解法: 运用分治递归的思想,首先将 所有的点 按照x的大小顺序排好,相同的话,参照y的大小。 然后取中间的 一个点 作为分割线。 这时,结果可能有三种情况,第一,最短的点对 在 分割线 左边;第二,最短点对 在 分割线 右边; 第三,最短点对 跨越了 分割线,一左一右。 分别求出左边 和 右边原创 2016-02-07 14:33:40 · 726 阅读 · 0 评论 -
最大子数组问题
问题的意思也就是,求出一个数组中连续的几个元素的最大值。 思路:先用一种分治的方法来解。 时间复杂度为O(nlgn) 将求A[i,...,j]上最大子数组和为问题 分解成以下三种情况,令mid=(i+j)/2 第一,求出A[i,...,mid]上的最大子数组和 第二,求出A[mid+1,...,j]上的最大子数组和 第三,结果跨跃mid,也就是说,子数组必将是A[...,mid,原创 2016-04-28 21:54:38 · 522 阅读 · 0 评论 -
LeetCode53. 最大子序和 (动态规划/分治法)
题目大意:求出一个序列的最大子序和,顾名思义,就是一段最大的连续序列的和题目分析:本题可以用两种解法求解,动态规划或分治法法一:动态规划,用result[i]保存以数字nums[i]结尾的最大子序和,然后不断更新result数组的最大值即可。时间复杂度O(n)代码展示:class Solution(object): def maxSubArray(self, nums): ...原创 2018-06-12 10:43:31 · 6108 阅读 · 2 评论