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

计数相关的题 Python 力扣

2284. 最多单词数的发件人

给你一个聊天记录,共包含 n 条信息。给你两个字符串数组 messages 和 senders ,其中 messages[i] 是 senders[i] 发出的一条 信息 。

一条 信息 是若干用单个空格连接的 单词 ,信息开头和结尾不会有多余空格。发件人的 单词计数 是这个发件人总共发出的 单词数 。注意,一个发件人可能会发出多于一条信息。

请你返回发出单词数 最多 的发件人名字。如果有多个发件人发出最多单词数,请你返回 字典序 最大的名字。

注意:

  • 字典序里,大写字母小于小写字母。
  • "Alice" 和 "alice" 是不同的名字。

示例 1:

输入:messages = ["Hello userTwooo","Hi userThree","Wonderful day Alice","Nice day userThree"], senders = ["Alice","userTwo","userThree","Alice"]
输出:"Alice"
解释:Alice 总共发出了 2 + 3 = 5 个单词。
userTwo 发出了 2 个单词。
userThree 发出了 3 个单词。
由于 Alice 发出单词数最多,所以我们返回 "Alice" 。

示例 2:

输入:messages = ["How is leetcode for everyone","Leetcode is useful for practice"], senders = ["Bob","Charlie"]
输出:"Charlie"
解释:Bob 总共发出了 5 个单词。
Charlie 总共发出了 5 个单词。
由于最多单词数打平,返回字典序最大的名字,也就是 Charlie 。

提示:

  • n == messages.length == senders.length
  • 1 <= n <= 104
  • 1 <= messages[i].length <= 100
  • 1 <= senders[i].length <= 10
  • messages[i] 包含大写字母、小写字母和 ' ' 。
  • messages[i] 中所有单词都由 单个空格 隔开。
  • messages[i] 不包含前导和后缀空格。
  • senders[i] 只包含大写英文字母和小写英文字母。

 思路:

python有一个zip函数可以同时遍历两个数组,非常方便。中规中矩的一道题。最后返回的时候的写法可以借鉴一下,非常简洁。就算是二元组也能用前面一个数字来比较大小。

class Solution(object):def largestWordCount(self, messages, senders):hashmap = {}for message, sender in zip(messages, senders):length = len(message.split(" "))if sender in hashmap:hashmap[sender] += lengthelse:hashmap[sender] = lengthreturn max((v, k) for k, v in hashmap.items())[1]

347. 前 K 个高频元素

给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。

示例 1:

输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]

示例 2:

输入: nums = [1], k = 1
输出: [1]

提示:

  • 1 <= nums.length <= 105
  • k 的取值范围是 [1, 数组中不相同的元素的个数]
  • 题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的

进阶:你所设计算法的时间复杂度 必须 优于 O(n log n) ,其中 n 是数组大小。

 解法:使用了类似冒泡排序的方式来进行排序,如果用堆的话,估计面试的时候不会有这个API来直接调,就先不管他的。做出来先。

class Solution(object):def topKFrequent(self, nums, k):""":type nums: List[int]:type k: int:rtype: List[int]"""dict={}for i in nums:dict[i]=dict.get(i,0)+1li=list(dict.keys())print(li)for i in range(len(li)):for j in range(len(li)-1-i):if dict[li[j]]<dict[li[j+1]]:li[j],li[j+1]=li[j+1],li[j]return li[0:k]

692. 前K个高频单词

给定一个单词列表 words 和一个整数 k ,返回前 k 个出现次数最多的单词。

返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序。

示例 1:

输入: words = ["i", "love", "leetcode", "i", "love", "coding"], k = 2
输出: ["i", "love"]
解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。注意,按字母顺序 "i" 在 "love" 之前。

示例 2:

输入: ["the", "day", "is", "sunny", "the", "the", "the", "sunny", "is", "is"], k = 4
输出: ["the", "is", "sunny", "day"]
解析: "the", "is", "sunny" 和 "day" 是出现次数最多的四个单词,出现次数依次为 4, 3, 2 和 1 次。

注意:

  • 1 <= words.length <= 500
  • 1 <= words[i] <= 10
  • words[i] 由小写英文字母组成。
  • k 的取值范围是 [1, 不同 words[i] 的数量]

进阶:尝试以 O(n log k) 时间复杂度和 O(n) 空间复杂度解决。

解法:与上一题类似

class Solution(object):def topKFrequent(self,words, k):cnt = {}for word in words:cnt[word] = cnt.get(word, 0) + 1rec = list(cnt.keys())for i in range(len(rec)):for j in range(len(rec)-1-i):if cnt[rec[j]]<cnt[rec[j+1]]:rec[j],rec[j+1]=rec[j+1],rec[j]if cnt[rec[j]]==cnt[rec[j+1]] and rec[j]>rec[j+1]:rec[j],rec[j+1]=rec[j+1],rec[j]return rec[0:k]

 

http://www.lryc.cn/news/453045.html

相关文章:

  • Express内置的中间件(express.json和express.urlencoded)格式的请求体数据
  • cmakelist加载Qt模块
  • 8-2.Android 任务之 CountDownTimer 编码模板(开启计时器、取消计时器)
  • Servlet的生命周期及用户提交表单页面的实现(实验报告)
  • 【Router】路由功能之IP过滤(IP Filter)功能(基于端口)介绍及实现
  • 数据结构_2.2、顺序表插入删除查找
  • 嵌入式C语言自我修养:编译链接
  • Mac制作Linux操作系统启动盘
  • PHP语言发展历程
  • Notepad++ 之 AndroidLogger插件
  • 开源2+1链动模式AI智能名片O2O商城小程序源码:线下店立体连接的超强助力器
  • 我为什么决定关闭ChatGPT的记忆功能?
  • 如何使用ssm实现中学生课后服务的信息管理与推荐+vue
  • 【分别为微服务云原生】9分钟ActiveMQ延时消息队列:定时任务的革命与Quartz的较量
  • 泛型编程--模板【C++提升】(特化、类属、参数包的展开、static、模板机制、重载......你想知道的全都有)
  • 安卓使用memtester进行内存压力测试
  • Dave Cheney: Go语言之禅
  • SpringMVC源码-AbstractUrlHandlerMapping处理器映射器将实现Controller接口的方式定义的路径存储进去
  • 满填充透明背景二维码生成
  • Python | Leetcode Python题解之第452题用最少数量的箭引爆气球
  • 代码随想录 | Day26 | 二叉树:二叉搜索树中的插入操作删除二叉搜索树中的节点修剪二叉搜索树
  • 使用Apifox创建接口文档,部署第一个简单的基于Vue+Axios的前端项目
  • TCP的第三次握手没有回复,会出现哪些问题现象
  • 【工具】arxiv_latex_cleaner 去除latex注释
  • macOS开发环境配置与应用开发
  • 15分钟学 Python :编程工具 Idea 和 vscode 中配置 Python ( 补充 )
  • MyBatis 如何实现延迟加载?深度探讨 MyBatis 的延迟加载:如何优化数据访问效率
  • springboot系列--web相关知识探索三
  • AI冲击下的编程职业未来:你缺的不是技术,而是跨学科思维!
  • 是否是 2 的幂次方