【每周算法系列】No.1 [2019/12/1—2019/12/5]
每周算法系列 NO.1
目录
2019/12/1 题型:数组
【题目描述】
【参考答案】
【自我分析】
2019/12/2 题型:贪心算法
【题目描述】
【参考答案】
【自我分析】
(1)total记录全程加油量和耗油量之差的总和。
若为非负,则表示从某一点起始可以走完全程(一圈);否则,表示不可走完全程(一圈)。
(2)remain记录第i加油站与(i+1)加油站之间加油量和油耗量之差。
为全部加油站的某一站,若为负数,表示从第i加油站无法到达(i+1)加油站,则起始点,肯定不为i,
将起始点尝试从i+1开始,即position=i+1;再将remain重新置零用以判断从i+1站是否可以达到i+2站。
通过for循环控制站点的移动。
(3)当通过for循环遍历所有站点时,若total<0说明,总的加油量<总的耗油量,
可以得出,不存在从某个站点出发,可以走完全程。
若total>0且position记录着第一个加油量>耗油量的站点的下标,即为起始站点。
【奇思妙想】
2019/12/3 题型:数组
【题目描述】
【参考答案】
【自我分析】
(1)领导—组员关系如上图,在数组中的体现leadernum[i]=ai,则,ai为i的领导。
即数组中存放的值,为数组下标的领导,例如,leadernum[1]=0说明一号员工不存在领导,自己可能就是领导,
再如leadernum[2]=1,说明一号员工为二号员工的领导。
(2)新建一个同等大小的数组membernum[],用于存放每个小组的员工数。
(3)由上可知,若leadernum[i]非0,这说明该员工存在领导
(4)将leadernum[i]作为数组下标值,寻找其领导,并在其对应的小组中+1,实现对小组员工数的统计。
又有3->2->1可知,一个份组的领导也是更大一级分组的员工,例如,2是3的领导,却是1的员工。
如何逐一的找出各级领导,并统计小组员工数便是关键,当数组元素值为0时结束(该员工不存领导,如1)。
(5)如何逐级求出领导,在于将当前数组元素值,作为该数组的下标,通过此下标,寻找其领导,例如leadernum[3]=2,则leadernum[2]=1,又有leadernum[1]=0结束,在程序中通过k实现。在此过程中还需完成对该小组员工数的+1。
2019/12/4 题型:数组
【题目描述】
【参考答案】
2019/12/5 题型:循环
【题目描述】
【自我分析】