算法题型专题
W墨眉W
这个作者很懒,什么都没留下…
展开
-
找出最小的K个数——优先队列和选择算法(分治思想)两种方式
题目:设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。1、优先队列解法(1)分析:定义一个PriorityQueue类型的优先队列queue,在初始化时指定队列为固定大小k,只能存储k个元素,同时自定义优先队列的优先规则(排序规则)(PriorityQueue用法单独写个博客来梳理)。从头到尾遍历数组元素,当queue中元素不等于k时,队列不满,数组中元素加入队列;当...原创 2020-04-10 22:35:19 · 731 阅读 · 0 评论 -
输油管道或水井挖水渠中路径和最短问题
1、问题描述修建输油管道或者挖水渠,方向都是指向正南正北或者正东正西。然后有多个油井或者水井需要向管道或者水渠修建小分支管道或者水渠,求输油管道或者水渠的位置,使得所有的油管小分支长度总和最小或者所有的水渠小分支长度总和最小。例题:某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。如果给定n口油...原创 2020-04-10 15:35:29 · 1252 阅读 · 0 评论 -
快速排序和快速排序的随机化版本
1、概述快速排序算法中,采用分治思想,每次调用partition函数对当前规模的数组进行处理,如何处理呢:(1)选择一个主元素,何为主元素,可以理解为电视中主角,此主角在这次调用partition(arr,left,right)后将会找到它的最终位置,使得它的左侧数据都比不大于它,右侧元素都不小于它(由此可知,此快速排序算法是原址排序,直接在原数组中进行排序),同时这个方法将会这个主元的下...原创 2020-04-10 13:30:37 · 439 阅读 · 0 评论 -
一般背包问题(小数背包问题)——贪心算法解决方案
1、小数背包问题n种物品,1个背包,背包可容纳的总重量为c,每个物品i的价值为vi,重量为wi,如何选择物品,使得装入物品的总价值最大?这个是小数背包问题,不同于0-1背包问题,0-1背包问题中,整个物品不可分割,要么不装入要么全部装入。2、贪心策略将物品按照性价比(单位重量价值)进行从大到小排序,将尽可能多的高性价比的物品装入背包,若将这种物品全部装入背包后,背包还有多余容量,则选择...原创 2020-04-08 10:57:35 · 5502 阅读 · 0 评论 -
活动安排问题——贪心算法解决方案
1、概述(1)案例:多个社团申请同一间教室开会,问如何分配和安排,使得此教室在一天中能够分配给更多的社团使用一台公共电脑可以被许多人申请使用,如何分配使得此电脑在一天中能够为更多的人服务使用(2)活动安排问题概述活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合。该问题要求高效地安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼...原创 2020-04-07 22:24:48 · 7297 阅读 · 0 评论