当前位置: 首页 > java >正文

算法训练营第十一天|150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素

150. 逆波兰表达式求值

题目

在这里插入图片描述

思路与解法

第一思路: 比较简单

class Solution:def evalRPN(self, tokens: List[str]) -> int:stack = []for item in tokens:if item != '+' and item != '-' and item != '*' and item != '/' :stack.append(item)else:b = int(stack.pop())a = int(stack.pop())if item == '+':stack.append(a + b)elif item == '-':stack.append(a - b)elif item == '*':stack.append(a * b)elif item == '/':stack.append(a/b)return int(stack.pop())

239. 滑动窗口最大值

题目

在这里插入图片描述

思路与解法

第一思路:

carl的思路 : 滑动窗口解法,值得后面认真看看细节,归纳一下

from collections import deque
class MyQueue(object): # 单调队列def __init__(self):self.queue = deque()def pop(self, value):if self.queue and value == self.queue[0]:return self.queue.popleft()def push(self, value):while self.queue and value > self.queue[-1]:self.queue.pop()self.queue.append(value)def front(self):return self.queue[0]class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:myque = MyQueue()res = []lens = len(nums)i=0if i + k <= lens:while i < k:myque.push(nums[i])i += 1res.append(myque.front())i=1while i + k <= lens:myque.pop(nums[i-1])myque.push(nums[i+k-1])res.append(myque.front())i += 1return res

347.前 K 个高频元素

题目

在这里插入图片描述

思路与解法

第一思路: 先统计数量,在得出前k多的值。但是不知道怎么实现。有点被误导,因为要很技巧性,其实感觉很粗暴
carl的讲解: 先用字典统计,再将字典key-value互换,然后将互换后的keys(values)方法到list中,进行排序,得出按顺序的出现次数,再通过出现次数去找对应的值。

class Solution:def topKFrequent(self, nums: List[int], k: int) -> List[int]:from collections import defaultdictres = []item_dict = defaultdict(int)for item in nums:item_dict[item] += 1time_dict = defaultdict(list) for key in item_dict.keys():time_dict[item_dict[key]].append(key)times = time_dict.keys()times = list(times)times.sort() # 从小往大count = 0 # 记载存入res中的总个数while count < k:res.extend(time_dict[times[-1]])count += len(time_dict[times[-1]])times.pop()return res
http://www.xdnf.cn/news/4814.html

相关文章:

  • 旅游设备生产企业的痛点 质检系统在旅游设备生产企业的应用
  • Python pandas 向excel追加数据,不覆盖之前的数据
  • <C#>log4net 的配置文件配置项详细介绍
  • python24-匿名函数
  • 2.5 特征值与特征向量
  • 二叉树的基本操作
  • es6/7练习题1
  • 微软推动智能体协同运作:支持 A2A、MCP 协议
  • mqtt选型,使用
  • 关键字where
  • Docker学习笔记
  • deeplabv3+街景图片语义分割,无需训练模型,看不懂也没有影响,直接使用,cityscapes数据集_25
  • python小说网站管理系统-小说阅读系统
  • 什么是HTML、CSS 和 JavaScript?
  • 电容的基本介绍
  • WPF 子界面修改后通知到主页面
  • 嵌入式 C 语言控制语句
  • 44 Python MySQL(PyMySQL 驱动)
  • Java的对象头:原理与源码详解
  • python实现的音乐播放器
  • 企业生产安全管理平台的功能架构
  • Java后端程序员学习前端之JavaScript
  • PHP反序列化漏洞
  • CBO和HBO区别及介绍
  • 【包含例题P1955、P1892、P2024、P1196】并查集、扩展域并查集、带权并查集
  • arcmap栅格数据地理坐标转换,从WGS84坐标到2000
  • 深入理解Bitmap及Roaring Map:原理与应用详解
  • PPIO × GPT4All:构建本地知识库,让AI更懂你
  • 从单智到多智:深度拆解基于MetaGPT的智能体辩论
  • AI原生手机:三大技术阵营的终极对决与未来展望