牛牛游湖 解题报告

首先这个题的基本思路是,如果最重的人尽可能的和最轻的人在一起公用一艘船,那么显然这样就可以完美配对。如果最重的人和最轻的人都不能一起,那么最重的人只能自己一艘船。所以根据这个思路我们可以进行贪心,先将数组进行排序,然后设置两个指针,i=0, j=n-1, 那么 w[i]一定是最轻的,w[j]是最重的,如果w[i]+w[j] <= max_limit,那么i和j可以共用一艘船,即i++,j--;否则的话,只能j自己一艘船,即j--。
代码如下:

class Solution {
public:
    /**
     * 
     * @param n int整型 
     * @param max_limit int整型 
     * @param w int整型vector 
     * @return int整型
     */
    int solve(int n, int max_limit, vector<int>& w) {
        // write code here
        sort(w.begin(), w.end());
        int i=0, j=n-1;
        int ans = 0;
        while(i <= j) {
            ans++;
            if(w[i]+w[j] <= max_limit) i++;
            j--;
        }
        return ans;
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-20 14:14
点赞 评论 收藏
分享
认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
nus22016021404:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务