
分治法
分治法
Whisper_yl
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
7-1 最大子列和问题
这道题在陈越姥姥的数据结构课中出现了,姥姥提出了四种解法。第一种是暴力的方法,即求出每个子序列和的大小,进行比较。第二种是在第一种的方法上稍加优化,减少累加次数。 第三种算法叫“分而治之”,把一个数组一分为二,一直分下去,直到左右两端各一个元素。此时求出左端子序列的最大值,求出右端子序列的最大值,再求出跨越左右两端子序列的最大值。三个最大值中最大的那一个,才是这个区间...原创 2018-08-26 23:31:31 · 903 阅读 · 0 评论 -
LeetCode: 315. 计算右侧小于当前元素的个数
给定一个整数数组 nums,按要求返回一个新数组counts。数组 counts 有该性质: counts[i] 的值是nums[i] 右侧小于nums[i] 的元素的数量。示例:输入: [5,2,6,1]输出: [2,1,1,0]解释:5 的右侧有 2 个更小的元素 (2 和 1).2 的右侧仅有 1 个更小的元素 (1).6 的右侧有 1 个更小的元素 (1).1 的右侧有 0 个更小的元素.分析: 这个题实际上就是求解各个逆序对,而如何求解逆序对,已经...原创 2020-07-13 08:20:09 · 187 阅读 · 0 评论 -
LeetCode: 51. 数组中的逆序对
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000分析: 暴力的方法很好想,但是难度是hard,而且数组长度是50000,可见暴力法必定超时。这里用的是分治法来降低时间复杂度。官...原创 2020-04-24 23:56:45 · 243 阅读 · 0 评论 -
归并排序
分治法的另一种经典引用,这里贴上递归和非递归的代码。(递归版本是为了防止我忘记太多的C++知识,所以应用了模板类)递归版本:#include<iostream>#define T doubleusing namespace std;T a[10000] = {0};int N;template <typename Type>v...原创 2019-01-15 11:16:41 · 140 阅读 · 0 评论 -
回文串
题目描述现在给你一个字符串S,请你计算S中有多少连续子串是回文串。输入输入包含多组测试数据。每组输入是一个非空字符串,长度不超过5000.输出对于每组输入,输出回文子串的个数。样例输入aba样例输出4分析: 如果暴力的话,TLE应该是没跑的。为了降低时间复杂度,我们可以用空间换时间...原创 2020-03-22 16:52:32 · 648 阅读 · 0 评论 -
循环赛日程表
#include<iostream>using namespace std;int a[1024][1024];void Table(int n){ if(n == 2){ a[0][0] = 1; a[0][1] = 2; a[1][0] = 2; a[1][1] = 1; return ; }else{ Table(n / 2); } //左下...原创 2019-01-15 12:06:00 · 1098 阅读 · 0 评论 -
输油管道问题(寻找第K大数)
问题描述:某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n 口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。如果给定n口油井的位置,即它们的x 坐标(东西向)和y 坐标(南北向),应如何确定主管道的最优位置,即使各油井到主管道之间的输油管道长度总和最小的位置? 给定n 口油井的位置,编程计算各油井到主管道之间的输油管道最小长度总和. 样...原创 2019-01-15 12:19:53 · 555 阅读 · 0 评论