Re: [闲聊] 每日leetcode

楼主: DJYOSHITAKA (Evans)   2024-09-18 23:23:39
今天的
前几天刚好写过
我那时候直接看答案
简单来说就是要把数字重复无限次来比
40 vs 40010 就要把它变成 4040404040... vs 400104001040010...
这边40会比40010大
因为40后面是空的 可能塞任何数字
而40010 扣掉前面40 后面已经确定是010 不确定性较少 所以比较小
大概是这样
然后要注意全都是0的case
好像可以用ans[0]=='0'来判断
def largestNumber(self, nums: List[int]) -> str:
def compare(s1, s2):
return int(str(s1)+str(s2))-int(str(s2)+str(s1))
ans = "".join([str(s) for s in sorted(nums, key=cmp_to_key(compare),
reverse=True)])
if ans.count('0') == len(ans):
return "0"
else:
return ans
然后又多写一题
732. My Calendar III
算是经典的meeting room题目吧
直接sortedlist 又拿下一个hard
from sortedcontainers import SortedList
class MyCalendarThree:
def __init__(self):
self.s = SortedList([])
def book(self, startTime: int, endTime: int) -> int:
self.s.add((startTime,1))
self.s.add((endTime,-1))
ans, cur = 0, 0
for _,num in self.s:
cur += num
ans = max(ans, cur)
return ans
作者: oin1104 (是oin的说)   2024-09-18 23:24:00
大师不用无限次 只要s1+s2 或是s2+s1 两个相反 看谁比较大应该就可以了干你就是这样写的 我哭了
作者: sustainer123 (caster)   2024-09-18 23:28:00
大师 还是不太懂 明天看解答
作者: Che31128 (justjoke)   2024-09-18 23:30:00
大师
作者: dont   2024-09-19 01:31:00
大师 你的讲法应该是解答的sort(key=lambda x:x*10)用重复无数次的字串当key再sort因为num最多10^9 所以*10

Links booklink

Contact Us: admin [ a t ] ucptt.com