首页 > 其他分享 >leetcode 2706 购买两块巧克力

leetcode 2706 购买两块巧克力

时间:2023-12-29 15:26:22浏览次数:43  
标签:巧克力 secondPrice money 2706 int 最小值 小值 leetcode

题目: 

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/

 

标签:巧克力,secondPrice,money,2706,int,最小值,小值,leetcode
From: https://www.cnblogs.com/liqi175/p/17934928.html

相关文章

  • 在不使用内置函数和中间变量的情况交换数字LeetCode力扣题解面试题16.01
    #异或法#Kotlin```KotlinclassSolution{  funswapNumbers(numbers:IntArray):IntArray{    numbers[0]=numbers[0]xornumbers[1]    numbers[1]=numbers[1]xornumbers[0]    numbers[0]=numbers[0]xor......
  • [LeetCode] 1578. Minimum Time to Make Rope Colorful
    Alicehasnballoonsarrangedonarope.Youaregivena0-indexedstringcolorswherecolors[i]isthecoloroftheithballoon.Alicewantstheropetobecolorful.Shedoesnotwanttwoconsecutiveballoonstobeofthesamecolor,sosheasksBobfor......
  • [LeetCode Hot 100] LeetCode102. 二叉树的层序遍历
    题目描述思路方法一:递归/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.val=val;}*TreeNode(intval,TreeNodelef......
  • [LeetCode Hot 100] LeetCode543. 二叉树的直径
    题目描述思路所谓二叉树的直径,就是左右子树的最大深度之和。方法一:/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.val=va......
  • [LeetCode Hot 100] LeetCode104. 二叉树的最大深度
    题目描述思路熟练掌握二叉树的遍历算法方法一:层序遍历(迭代)+计数/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.val=val;......
  • [LeetCode Hot 100] LeetCode110. 平衡二叉树
    题目描述思路LeetCode104.二叉树的最大深度变种方法一:后序遍历(递归、dfs)/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.......
  • [LeetCode Hot 100] LeetCode111. 二叉树的最小深度
    题目描述思路二叉树的最小深度就是第一个叶子节点所在的层数方法一:前序遍历(递归、dfs)/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intva......
  • [LeetCode Hot 100] LeetCode94. 二叉树的中序遍历
    题目描述思路熟练掌握迭代和递归的代码。递归:额外写一个函数voidinOrder(TreeNodenode,Listres)迭代:令cur=root,一直往左子树找,找到最后一个左子节点,当cur为空,就开始处理栈顶元素(将栈顶元素加入结果集),随后将cur设置为右子节点,继续执行以上操作。方法一:递归/***......
  • [LeetCode Hot 100] LeetCode144. 二叉树的前序遍历
    题目描述思路熟练掌握迭代和递归的代码。递归代码:额外写一个函数voidpreOrder(TreeNodenode,Listres)迭代代码:会用到数据结构——栈。先入栈当前节点的右子节点,再入栈左子节点。方法一:递归/***Definitionforabinarytreenode.*publicclassTreeNode{*......
  • [LeetCode Hot 100] LeetCode145. 二叉树的后序遍历
    题目描述思路递归:额外写一个函数voidpostOrder(TreeNodenode,Listres)迭代:前序遍历:根---左---右将前序遍历改造成:根---右---左然后反转根右左为:左---右---根,即为后序遍历优化一下:while(!stack.isEmpty()){ TreeNodenode=stack.pop(); res.addFirst(node.......