本文主要是介绍Java数据结构与算法(leetcode热题881. 救生艇),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
救生艇属于贪心算法,解题之前条件一定要归纳好。题目中存在3个要求:
1.一艘船最多坐2人
2.船数要求最小
3.每艘船重量小于limit
意味着体重较轻的两人可以同乘一艘救生艇。
. - 力扣(LeetCode)
实现原理
1.重量大的有轻的可以配对,则可以配对同乘。
2.重量大的没有轻的可以配对,则单独乘。
3.涉及到轻重配对,最佳还是优先给予排序好的数据进行配对。
具体代码实现
class Solution {public int numRescueBoats(int[] people, int limit) {int res=0;Arrays.sort(people);int left=0;int right=people.length-1;while(left<=right){if(people[left]+people[right]<=limit){++left;}--right;++res;}return res;}
}
QA1:
这篇关于Java数据结构与算法(leetcode热题881. 救生艇)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!