zoukankan      html  css  js  c++  java
  • 881. Boats to Save People

    The i-th person has weight people[i], and each boat can carry a maximum weight of limit.

    Each boat carries at most 2 people at the same time, provided the sum of the weight of those people is at most limit.

    Return the minimum number of boats to carry every given person.  (It is guaranteed each person can be carried by a boat.)

    Example 1:

    Input: people = [1,2], limit = 3
    Output: 1
    Explanation: 1 boat (1, 2)
    

    Example 2:

    Input: people = [3,2,2,1], limit = 3
    Output: 3
    Explanation: 3 boats (1, 2), (2) and (3)
    

    Example 3:

    Input: people = [3,5,3,4], limit = 5
    Output: 4
    Explanation: 4 boats (3), (3), (4), (5)

    Note:

    • 1 <= people.length <= 50000
    • 1 <= people[i] <= limit <= 30000

    Approach #1: C++.

    class Solution {
    public:
        int numRescueBoats(vector<int>& people, int limit) {
            int ans = 0;
            sort(people.begin(), people.end());
            int i = 0, j = people.size()-1;
            while (i <= j) {
                ans++;
                if (people[i] + people[j] <= limit)
                    i++;
                j--;
            }
            return ans;
        }
    };
    

      

    Analysis:

    Because a boat can carry two people. if the boat can carry the max weight people and the min weight people, then do so. Otherwise, the boat carry the max weight people only.

    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    冒泡排序
    CFURLCreateStringByAddingPercentEscapes
    AESCrypt加密与解密
    关于Xcode 的SDK与系统版本理解
    nginx 安全稳定版本
    bcom 遇到的那些问题
    nginx 配置404错误页面
    AES 对称加密解密
    SpringCloud stream连接RabbitMQ收发信息
    springboot1.5 和 2.0 引入 redis 并封装工具类
  • 原文地址:https://www.cnblogs.com/h-hkai/p/10313468.html
Copyright © 2011-2022 走看看