classSolution(object):defevalRPN(self, tokens):"""
:type tokens: List[str]
:rtype: int
"""classStack:def__init__(self):
self.items =[]defisEmpty(self):return self.items ==[]defpush(self, item):
self.items.append(item)defpop(self):return self.items.pop()defpeek(self):return self.items[len(self.items)-1]defsize(self):returnlen(self.items)defpostfixEval(tokens):
operatorList =["+","-","*","/"]
operandStack = Stack()for token in tokens:if token notin operatorList:
operandStack.push(int(token))else:
operand2 = operandStack.pop()
operand1 = operandStack.pop()
result = doMath(token,operand1,operand2)
operandStack.push(result)
result =int(operandStack.pop())return result
defdoMath(op, op1, op2):if op =="*":return op1 * op2
elif op =="/":return op1 / op2
elif op =="+":return op1 + op2
else:return op1 - op2
return postfixEval(tokens)
2、多数元素
classSolution(object):defmajorityElement(self, nums):"""
:type nums: List[int]
:rtype: int
"""
length =len(nums)
th = length/2
count ={}
num =0for i in nums:if i notin count:
count[i]=1else:
count[i]= count[i]+1
num = num+1if num > th:for j,k in count.items():if k>th:return j
3、任务调度器
classSolution(object):defleastInterval(self, tasks, n):"""
:type tasks: List[str]
:type n: int
:rtype: int
"""
length =len(tasks)if length <=1:return length
# 用于记录每个任务出现的次数
task_map =dict()for task in tasks:
task_map[task]= task_map.get(task,0)+1# 按任务出现的次数从大到小排序
task_sort =sorted(task_map.items(), key=lambda x: x[1], reverse=True)# 出现最多次任务的次数
max_task_count = task_sort[0][1]# 至少需要的最短时间
res =(max_task_count -1)*(n +1)for sort in task_sort:if sort[1]== max_task_count:
res +=1# 如果结果比任务数量少,则返回总任务数return res if res >= length else length