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/