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

博士后是否可以做网站负责人网络公司品牌推广

博士后是否可以做网站负责人,网络公司品牌推广,宁波做360网站推广,河南网站建设推广运营问题描述 给你一个整数数组 nums 和一个整数 k&#xff0c;请你返回其中出现频率前 k 高的元素。请按升序排列。 1 < nums.length < 10^5k 的取值范围是 [1, 数组中不相同的元素的个数]题目数据保证答案唯一&#xff0c;换句话说&#xff0c;数组中前 k 个高频元素的集合…

问题描述

给你一个整数数组 nums 和一个整数 k,请你返回其中出现频率前 k 高的元素。请按升序排列。

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

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

测试样例

样例1:

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

样例2:

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

样例3:

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

解题思路: 

用一个去重的数组对每一个出现的数字计数然后按顺序得出前n个数字就行

数据结构:

具体来说,用unordered_map 记录每个数字的频率。


然后将map中的数据添加到 vector 向量中。


接着是排序: 使用 sort 函数对 result 向量进行排序,排序依据是元素的频率(降序)。

输出格式的转换:


构建返回字符串: 遍历排序后的 result 向量的前 k 个元素,将它们转换为字符串并使用逗号分隔,

存储在 stringstream 中。

返回结果: 将 stringstream 中的内容转换为字符串并返回。

算法步骤

  1. 频率计数:使用 Counter 统计每个元素的出现频率。
  2. 选择前 k 个高频元素
    • 一种方法是使用最小堆(min-heap)来维护当前的前 k 个高频元素。这样可以在 O(n log k) 的时间复杂度内完成。
    • 另一种方法是使用快速选择算法(Quickselect)来找到第 k 个高频元素,然后提取前 k 个高频元素。这种方法的平均时间复杂度是 O(n)
  3. 排序:最后,对前 k 个高频元素按元素值进行升序排序。

C++代码如下:

#include <iostream>  
#include <vector>  
#include <unordered_map>  
#include <queue>  
#include <sstream>  
#include <algorithm>  using namespace std;  string topKFrequent(vector<int>& nums, int k) {  // 使用哈希表记录每个元素的频率  unordered_map<int, int> freqMap;  for (int num : nums) {  freqMap[num]++;  }  vector<pair<int,int>> result;for(auto x : freqMap){result.push_back(x);}sort(result.begin(), result.end(), [](const pair<int, int>& a, const pair<int, int>& b) {return a.second > b.second;});stringstream ss;for (size_t i = 0; i < k; ++i) {  ss << result[i].first;  if (i < k - 1) {  ss << ",";  }  }return ss.str();
}   int main() {//  You can add more test cases herestd::vector<int> nums1 = {1, 1, 1, 2, 2, 3};std::vector<int> nums2 = {1};//cout << topKFrequent(nums1, 2) << endl;std::cout << (topKFrequent(nums1, 2) == "1,2") << std::endl;std::cout << (topKFrequent(nums2, 1) == "1") << std::endl;return 0;
}

Python代码如下:

from collections import Counterdef solution(nums, k):# 使用Counter记录每个元素的频率freq_map = Counter(nums)# 将频率map转化为列表,并先按频率降序,再按元素值升序排序result = sorted(freq_map.items(), key=lambda x: (-x[1], x[0]))# 获取频率最高的前k个元素top_k = [result[i][0] for i in range(k)]return top_kif __name__ == "__main__":# 测试用例nums1 = [1, 1, 1, 2, 2, 3]nums2 = [1]nums3 = [4, 4, 4, 2, 2, 2, 3, 3, 1]# 输出测试结果print(solution(nums1, 2) == [1, 2])  # 输出: Trueprint(solution(nums2, 1) == [1])  # 输出: Trueprint(solution(nums3, 2) == [2, 4])  # 输出: True

 通过咯,感觉这个困难题的难度一般,主要是输出的格式需要自己去转换

这么一看python这么短,真是派派又森森呀~

http://www.zhongyajixie.com/news/35027.html

相关文章:

  • 网站开发论文题目免费建站建站abc网站
  • wordpress图片下一篇苏州网站关键词优化推广
  • 做ps赚钱网站有哪些seo标签优化
  • 做cpa网站站长之家查询网
  • 聊城定制网站建设公司交换链接平台
  • 做网站需要懂程序吗北京百度推广优化排名
  • 推广做网站联系方式百度指数怎么看排名
  • 头条网站怎么做的手机如何制作网站教程
  • p2p金融网站建设培训机构还能开吗
  • 确定网站主题谷歌seo网络公司
  • 做营销网站推广百度代运营公司
  • 济南seo整站外包营销策划方案范文
  • 大学生做偷拍视频网站关键词挖掘查询工具
  • 哪个网站做美食视频软件爱站网 关键词挖掘工具站长工具
  • 门户网站推广方式重庆网站快速排名提升
  • 最安全的软件下载网站seo自然搜索优化排名
  • 合肥网站运营管理公司合肥百度推广公司哪家好
  • 17网站一起做网店潮汕网络营销的十大特点
  • 广东品牌网站设计网址导航
  • 情人节网站源码下载网推公司
  • 网站开发技术包括什么搭建网站要多少钱
  • java web网站开发文档如何制作网站赚钱
  • 凡科网站怎么做链接头像logo如何建立网站 个人
  • 亚洲做爰直播网站临沂百度代理公司有几个
  • 北京公司网站十大收益最好的自媒体平台
  • 阜阳网站建设工作室搜索引擎主要包括三个部分
  • 物联网 网站开发许昌网络推广外包
  • 全屏类网站东莞网站推广优化公司
  • 问答系统网站模板百度竞价开户多少钱
  • 为什么百度搜出来的网站只有网址没有网站名和网页摘要.品牌维护