美文网首页
881. 救生艇

881. 救生艇

作者: 漫行者_ | 来源:发表于2021-08-28 23:29 被阅读0次

881. 救生艇

本题一开始理解错题目了。理解成,小船不限制成坐数量
思路一开始想的是:

  • 尽量先把小的放在一个船上,果然有问题。
  • 应该先取一个大的,再尽量放小的。代码写起来很啰里八嗦的。
public int numRescueBoats(int[] people, int limit) {
        Arrays.sort(people);
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < people.length; i++) {
            list.add(people[i]);
        }
        int num = 0;
        while (!list.isEmpty()) {
            int h = list.get(list.size() - 1);
            int i = 0;
            for (; i < list.size() - 1 && h + list.get(i) <= limit; i++) {
                h += list.get(i);
            }
            num++;
            for (int j = 0; j < i; j++) {
                list.remove(0);
            }
            list.remove(list.size()-1);
        }
        return num;
    }

然后按照题目要求两个最多:

public int numRescueBoats(int[] people, int limit) {
        Arrays.sort(people);
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < people.length; i++) {
            list.add(people[i]);
        }
        int num = 0;
        while (!list.isEmpty()) {
            int h = list.get(list.size() - 1);
            int i = 0;
            if (i < list.size() - 1 && h + list.get(i) <= limit) {
                h += list.get(i);
                i++;
            }
            num++;
            for (int j = 0; j < i; j++) {
                list.remove(0);
            }
            list.remove(list.size()-1);
        }
        return num;
    }

用双指针来做:

    public int numRescueBoats(int[] people, int limit) {
        Arrays.sort(people);
        int i = 0;
        int l = people.length - 1;
        int num = 0;
        while(i <= l) {
            if(people[i] + people[l] > limit) {
                l--;
            } else {
                i++;
                l--;
            }
            num++;
        }
        return num;
    }

证明感觉很难

相关文章

  • 881. 救生艇

    881. 救生艇[https://leetcode-cn.com/problems/boats-to-save-p...

  • 881. 救生艇

    2021-08-26 LeetCode每日一题 链接:https://leetcode-cn.com/proble...

  • 881. 救生艇(Python)

    难度:★★★★☆类型:数组方法:数学 力扣链接请移步本题传送门[https://leetcode-cn.com/p...

  • LeetCode 双指针类题解

    881. Boats to Save People Note:1 <= people.length <= 5000...

  • 救生艇

    “哦!得了吧,哈利你听多了那些糊弄新手的故事。”坐在摇晃船上的艾利克斯带着轻蔑冲着金发年轻男子一笑。随后低下头仔细...

  • 无长江口外轮沉没尚有12人下落不明 沉船位置已确定

    图说:目前,东雷6正在打捞救生艇,而救生艇附近水域正是难船的沉没位置。上海海事局供图 今天(4月6日)凌晨,上海海...

  • 881.大丫头,你慢点

    时间不长,岁月不短,走过的已经成为过去,未来却迟迟不肯来,风月无边,人心难断,万物总在变化不止,扬沙落尽,指尖清冷...

  • 【leetcode】881. Boats to Save Peo

    1、题目描述 The i-th person has weight people[i], and each boa...

  • 双11-11的感悟

    生活是条沉船,但我们不要忘了在救生艇上唱歌。

  • 得脱救生艇

    1、与清廉的伙伴为伍,山洞/28【在早晨和晚夕祈祷自己的主而求其喜悦者,你应当耐心地和他们在一起,不要藐视他们,而...

网友评论

      本文标题:881. 救生艇

      本文链接:https://www.haomeiwen.com/subject/lmrpiltx.html