Re: [閒聊] 每日leetcode

作者: JIWP (JIWP)   2024-05-04 15:54:18
881. Boats to Save People
有一個array people,people[i]代表這個人的重量
現在要用一艘船載所有人
船一次最多能兩個人,且最大負重為limit
請問最少幾次就能載完所有人
思路:
將people排序,用two pointer指向最重、最輕的人
每次一定會載走最重的那個
如果最重+最輕<limit,那就連最輕的也載走
就這樣載走所有人,就可以得到答案了
因為要排序所以時間複雜度是o(nlog(n))
換個想法,因為每個人的體重一定都是<=limit
那建立一個array長度為limit+1
去記錄每個體重出現的次數
這樣就只要o(n)就好
c code :
int numRescueBoats(int* people, int peopleSize, int limit) {
int *rec=(int *)calloc(limit+1,sizeof(int));
for (int i=0;i<peopleSize;i++){
rec[people[i]]++;
}
int r=limit,l=0,ans=0;
while(r>=l){
while(r>=l && rec[r]<=0){
r
作者: aioiwer318 (哀歐)   2024-05-04 15:55:00
別卷了
作者: argorok (s.green)   2024-05-04 15:57:00
別卷了
作者: wu10200512 (廷廷)   2024-05-04 16:01:00
別卷了
作者: digua (地瓜)   2024-05-04 16:02:00
大師
作者: ChungHsi1021 (s0mple)   2024-05-04 16:04:00
別卷了
作者: sustainer123 (caster)   2024-05-04 16:38:00
大師

Links booklink

Contact Us: admin [ a t ] ucptt.com