leetcode 2706 购买两块巧克力

题目: 

2706 购买两块巧克力

思路:

  • 找两个最小值。
  • 分情况讨论
  •  

代码

class Solution:
    def buyChoco(self, prices: List[int], money: int) -> int:
        # 遍历一遍,找2个最小值
        # 找一个最小值我们都会。
        # 找次小值,就分两种情况,假设minPrice是最小值,secondPrice是次小值
        #   遍历一遍,假设为i
        #   第1种,i比现在的最小值minPrice小,那么刚才的最小值就变成次小值secondPrice
        #   第2种,i比现在的次小值secondPrice小,没有minPrice小,就只更新secondPrice
        #   第3中,i比这两个最小值都大,那就不用动.
        #   第4中,特殊.[1,1,3,4]这里2个1都是最下值,在最小值的时候增加等于,就是小于等于<=

        min_price = 101  # 设为一个极大值,题目范围是100最大,我设置为101
        second_price = 101
        for i in prices:
            if i <= min_price:
                second_price = min_price    # 更新次小值
                min_price = i   # 再更最小值
            elif min_price < i < second_price:  # 只更新次小值
                second_price = i
            # 其他不更新
        # print(min_price,second_price)
        # 判断符合要求不
        last_money = money - min_price - second_price
        if  last_money >= 0:
            return last_money
        else:
            return money   

通过截图:

资料:

思路参考:https://leetcode.cn/problems/buy-two-chocolates/solutions/2583616/javapython3cmo-ni-sou-suo-zui-xiao-jie-g-zult/

 

posted @ 2023-12-29 15:10  o蹲蹲o  阅读(14)  评论(0编辑  收藏  举报