美文网首页
881-救生艇

881-救生艇

作者: 何几时 | 来源:发表于2021-07-04 17:36 被阅读0次

暴力解只能解决一部分的case

class Solution:
    def numRescueBoats(self, people: List[int], limit: int) -> int:
        cnt = 0  # 船的数量
        addSum = 0  # 累计和
        left = 0  # 左指针

        for right in range(len(people)):
            if people[left] == limit:
                cnt += 1
                if (right+1) < len(people):
                    left = right + 1
                addSum = 0
                print(str(right) + ': people[left] == limit')
            elif people[right] == limit:
                cnt += 2
                if (right+1) < len(people):
                    left = right + 1
                addSum = 0
                print(str(right) + ': people[right] == limit')
            else:
                addSum += people[right]
                if addSum >= limit:
                    print(str(right) + ': addSum')
                    cnt += 1
                    if addSum > limit:
                        left = right
                        addSum = people[right]
                    else:
                        if (right+1) < len(people):
                            left = right + 1
                        addSum = 0

        print(addSum)
        if addSum != 0:
            cnt += 1
        
        return cnt

WARNING:明显是一开始没有理解题意,题意是一艘船最多载两个人,而且不是一定要挨着的元素才能一起坐船,所以上面的代码一开始就错了

贪心算法(双指针)

=》sort之后+对撞指针

思路:如果重的胖子和最轻的瘦子不能一起坐船,那么最轻的瘦子就得跟第二胖匹配,如果匹配成功那就一起坐船走。

对撞双指针的结束条件是,当左指针下标大于右指针时,就要结束

知识点:

  1. python的排序函数是啥?
    list.sort()

正确题解:

class Solution:
    def numRescueBoats(self, people: List[int], limit: int) -> int:
        cnt = 0  # 船的数量
        left = 0  # 左指针
        right = len(people) - 1  # 右指针

        people.sort()
        # 而不是 left != right 
        while left <= right:
            if people[left] + people[right] <= limit:
                left += 1
            right -= 1
            cnt += 1
        
        return cnt

相关文章

  • 881-救生艇

    暴力解只能解决一部分的case WARNING:明显是一开始没有理解题意,题意是一艘船最多载两个人,而且不是一定要...

  • 救生艇

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

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

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

  • 双11-11的感悟

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

  • 得脱救生艇

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

  • leetcode 881 救生艇

    思路:双指针第一种不移动指针,往外弹元素;第二种移动指针,首尾两人之和如果大于限重,则第一个人坐船,否则两个人做。...

  • 881. 救生艇

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

  • 881. 救生艇

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

  • 翻译

    官方说:周日,西班牙加那利群岛一艘游轮上的一艘救生艇坠入港口约65英尺,一根缆绳折断,将船员困在救生艇下方,造成5...

  • 翻译作业

    西班牙加那利群岛的拉帕尔马(美联社)——周日,一艘救生艇在西班牙加那利群岛的一艘游轮上进行安全演习时,一艘救生艇掉...

网友评论

      本文标题:881-救生艇

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