分治
小胡同的诗
千里之行,始于足下
展开
-
LeetCode315 计算右侧小于当前元素的个数(分治求逆序数)
题目链接:leetcode315给你一个数组,让你求每个位置的数后面比它小的数的数量。也就是以每个数字为头的逆序对的数量。解题思路树状数组、线段树先离散化一下,然后逆序统计每个位置前比该数字小的数。分治先离散化,再利用归并排序把数组逆序,并求后面的区间对前面区间的贡献。代码分治class Solution {public: vector<int> countSmaller(vector<int>& nums) { int n =原创 2020-10-31 17:51:25 · 217 阅读 · 1 评论 -
LeetCode215 数组中的第K个最大元素(分治 | 快速排序)
题目链接:leetcode215题面题目大意求数组中第k大的数,注意区分第k大和第k小。解题思路暴力每次选取一个当前最大值,重复 K 次即可找到答案时间复杂度 O(nk)O(nk)O(nk),空间复杂度 O(1)O(1)O(1) 。大根堆维护一个大根堆,取前 K 个堆顶元素即可找到答案。时间复杂度 O(n+log2nk)O(n+log_2n^k)O(n+log2nk),空间复杂度 O(n)O(n)O(n)。分治实际上就是利用快速排序的思想,每次去确定一个数的位置,然后分治原创 2020-09-29 19:56:56 · 493 阅读 · 0 评论 -
LeetCode109 有序链表转二叉搜索树(分治 | 双指针)
题目链接:leetcode109题面题目大意给你一个有序数组,让你转成一个平衡的二叉搜索树解题思路乍一看这道题似乎要构造一个 平衡二叉树,而平衡二叉树的实现方法有多种,例如: SplayTree、AVLTree、SBTree、RBTree等。但代码量感人,根据他人思路大致总结如下几种方法:寻找中位数+分治具体思路就是每次对于一个有序链表,取中位数作为根节点,之后左半边和右半边分别递归构造子树。能否满足平衡的限制呢?我们发现左右区间的元素数量最多相差 1 个,显然满足。如何寻找中位数呢?数原创 2020-09-17 10:08:05 · 155 阅读 · 0 评论 -
HDU1007 Quoit Design(分治)
题目链接:hdu1007题目大意给定一个整数 n ,下面跟着 n 对二维坐标 (x, y),其中x、y均为实数,表示平面内的 n 个点。问平面内这 n 个点之间的最短距离是多少?输出这个答案的一半。解题思路枚举时间复杂度 O(n2)O(n^2)O(n2),具体做法略。分治对于分治的做法我们大致可以分为三个步骤:预处理,分离区间,合并区间。首先我们把平面的点一分为二,然后计算各自的最小距离,回溯后取其中最小后并枚举两个区间一个点在左另一个点在右的情况,计算距离看是否能够更新最小值。以下是对原创 2020-09-11 10:37:39 · 314 阅读 · 0 评论 -
LeetCode53. 最大子序和(分治)
题目链接:Leetcode53Code:class Solution {public: int maxSubArray(vector<int>& nums) { if (nums.size() == 0) return 0; return dfs(nums, 0, nums.size()-1); } int ...原创 2019-09-05 00:51:18 · 212 阅读 · 0 评论 -
算法实验题2.1 向量分类问题(分治 or 广义表)
目录题目思路个人思路书中给的解法笔记实现效果展示总结题目思路个人思路暴力分类O(m2)O(m^2)O(m2)的复杂度进行分类,O(n)O(n)O(n)的复杂度进行比较,总复杂度O(m2n)O(m^2n)O(m2n)广义表结构体:struct node { int sz; //以当前结点的前驱结点为前缀的向量个数 linklist *head; //存相同前缀的...原创 2019-09-22 23:28:54 · 838 阅读 · 1 评论 -
算法实验题2.2 条形图轮廓问题(分治)
题目思路分治,每一个矩形都有一个轮廓图,不妨设它的能代表轮廓线的三个点从左到右存在一张线性表中,当有两个矩形要求其轮廓线一共分为以下几种情况:两个矩形没有交集,靠左的矩形的右边界小于靠右矩形的左边界,即Rl<LrR_l<L_rRl<Lr;两个矩形边相切,靠左的矩形的右边界等于靠右矩形的左边界,即Rl==LrR_l==L_rRl==Lr;两个矩形边相交,...原创 2019-09-23 09:01:49 · 1444 阅读 · 0 评论 -
算法实验题5.3 输油管道问题(中位数定理,分治)
题目描述某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。如果给定n口油井的位置,即它们的x坐标(东西向)和y坐标(南北向),应如何确定主管道的最优位置,即使各油井到主管道之间的输油管道长度总和最小的位置?如果有两口油井,取两口油井南北方向之间的任意位置如果有三口油井,则取中位数。n口油井即为找...原创 2019-09-25 14:13:29 · 1107 阅读 · 0 评论