【Leetcode Daily】2606优惠券校验器
发表于|更新于|力扣日常 | LeetcodeDaily
|总字数:312|阅读时长:1分钟|浏览量:
题目浅析
想查看原题可以点击题目链接。
简单地说,就是给三个列表,列表各项组合对应一个优惠券,并规定了优惠券的合法场景,要求筛选出其中合法的优惠券代码,并最终按几个条件排序。
思路分享
- 虽然标的是简单题,但做着挺费劲。灵神提供了一个很好的思路,由于需要按照其中的一些字符串排序,可以把字符串直接映射成整数,这样排序就方便了。而且 python 的 isalnum 函数能够轻松判断这个字符是否是数字或字母,相当方便。
代码解答(强烈建议自行解答后再看)
- 参考题解
1 | class Solution: |
文章作者: 陆爻齐-LuYaoQi
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LuYaoQi's Blogs!
相关推荐

2025-12-10
【Leetcode Daily】1046最后一块石头的重量
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个一维数组,当作一堆石头重量,每次选两个最重的碰,将两个石头之差放回去,求最后剩下的一个石头重量(没有就0) 思路分享 这种多次求最值的,用堆,只是要记得,python的 heapify 默认最小堆,所以数字先做负数处理再堆化。 https://leetcode.cn/problems/last-stone-weight/solutions/540130/zui-hou-yi-kuai-shi-tou-de-zhong-liang-b-xgsx/ 代码解答(强烈建议自行解答后再看) 参考题解 12345678910111213class Solution: def lastStoneWeight(self, stones: List[int]) -> int: for i in range(len(stones)): stones[i] = -stones[i] heapify(stones) while stones and...

2025-12-18
【Leetcode Daily】1845座位预约管理系统
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个数字 n,现在会有两种操作,预约和取消预约,前者会拿到当前可拿的最小座位号,后者会将指定的座位号恢复为没有预约的状态,完成一系列预约和取消预约的调用。 思路分享 可参照【Leetcode Daily】3275第K近障碍物查询,用整型变量维护普通的最小值,用堆维护例外的最小值,这样整个题目的空间复杂度就与 n 无关了(与暴力的 n 元素数组查询合法对比) https://leetcode.cn/problems/seat-reservation-manager/solutions/2838121/liang-chong-fang-fa-wei-hu-ke-yu-yue-de-tmub8/ 代码解答(强烈建议自行解答后再看) 参考题解 12345678910111213141516171819202122class SeatManager: def __init__(self, n: int): self.min_seat = 1 self.more_seat = [] ...

2025-12-21
【Leetcode Daily】1942最小未被占据椅子的编号
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个数组,代表一群人到达和离开的时间,人一旦到达就会占据目前下标最小的座位,求名单第一个人占据到的座位下标。 思路分享 自己的思路与灵神有些相似,是用堆记录离开的时间对应座位下标,以及除默认最小下标座位外,因离开空出的座位,然后再按到达升序遍历人员,先释放应该离开的座位,然后让该人员入座,判断该人员是否名单第一位,是则返回结果。 https://leetcode.cn/problems/the-number-of-the-smallest-unoccupied-chair/solutions/894516/shi-jian-sao-miao-xian-dui-by-endlessche-5tzj/ 代码解答(强烈建议自行解答后再看) 参考题解 12345678910111213141516171819202122232425262728class Solution: def smallestChair(self, times: List[List[int]], targetFriend: int)...

2025-12-15
【Leetcode Daily】1962移除石子使总数最小
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一堆一维数组,每次操作取最大值,并减去这个值一半的去小数的底值,共执行 k 次,求最终的数组和。 思路分享 就是堆的基本操作,负化使小顶堆变大顶堆,负数 // 2 相当于取 ceil,heapreplace 直接快速取值和加值。 https://leetcode.cn/problems/remove-stones-to-minimize-the-total/solutions/2576668/yuan-di-dui-hua-o1-kong-jian-pythonjavac-29iz/ 代码解答(强烈建议自行解答后再看) 参考题解 12345678910111213class Solution: def minStoneSum(self, piles: List[int], k: int) -> int: stoneSum = sum(piles) for i in range(len(piles)): piles[i] =...

2025-12-19
【Leetcode Daily】2208将数组和减半的最少操作次数
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个数组,现在需要你对这个数组做操作,即取一个数减半,求整个数组之和不大于原来一半的最少操作数。 思路分享 想要每次操作尽可能多减少数值,就每次都要取其中的最大值,这里就可以用大顶堆来辅助了。 不过灵神指出,为了尽可能准确,应该尽量避免浮点数的产生,通过看不懂的每个数字除不超过 20 次,所以就把每个数乘 2^20。 https://leetcode.cn/problems/minimum-operations-to-halve-array-sum/solutions/1353455/by-endlesscheng-xzk2/ 代码解答(强烈建议自行解答后再看) 参考题解 12345678910111213141516class Solution: def halveArray(self, nums: List[int]) -> int: s = sum(nums) / 2 cur_s = 0 for i in range(len(nums)): ...

2025-12-19
【Leetcode Daily】2233K次增加后的最大乘积
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个一维数组,可以对其中任意一个数字加一,执行 k 次,求数组的最大乘积。 思路分享 为使乘积最大化,应该需要每次取最小值+1(如果 x变成了 x+1,整体变成原来的 (x+1)/x,也就是 1 + 1/x,发现 x 越小,总乘积越大) https://leetcode.cn/problems/maximum-product-after-k-increments/solutions/1408853/tan-xin-mei-ci-gei-zui-xiao-de-yuan-su-j-jxnl/ 代码解答(强烈建议自行解答后再看) 参考题解 123456789class Solution: def maximumProduct(self, nums: List[int], k: int) -> int: heapq.heapify(nums) for _ in range(k): heapq.heapreplace(nums,...
公告
希望你我都能得偿所愿
PS:相对流水账的文章只能在归档找得到
系列文章
