630. 课程表 III
贪心 首先 根据课程的结束时间排序,同等课程时长的课 肯定优先选择 结课时间较晚的课,
对于结课时间较早的课 先能选就选, 然后碰见 更晚的结课时间的课 ,只需要判断 当前这门课的时长是否低于之前所选的最长时长,若低于 无脑替换。因为两项都更优。
class Solution:
def scheduleCourse(self, courses: List[List[int]]) -> int:
courses = sorted(courses,key=lambda x:(x[1],x[0]))
t = 0
num = 0
heap =[]
for i in range(len(courses)):
#print(t,courses[i])
if t+courses[i][0] <=courses[i][1] :
t += courses[i][0]
num +=1
heapq.heappush(heap,-courses[i][0])
elif len(heap)>0 and courses[i][0] < -heap[0]:
t += heap[0]
heapq.heappop(heap)
heapq.heappush(heap,-courses[i][0])
t += courses[i][0]
return num
剑指 Offer II 024. 反转链表
一个记录反转链表的头 pre , 一个记录当前操作结点 cur ,一个用来临时存储当前节点的下一个使得操作完当前节点就可以操作下一个 tmp
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
cur, pre = head, None
while cur:
tmp,cur.next=cur.next,pre
pre,cur= cur,tmp
return pre