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

vs中可以用新建项目来做网站吗自己做网站花钱么

vs中可以用新建项目来做网站吗,自己做网站花钱么,中铁建设门户网登录忘记密码,网站设计公司建设网站前K个高频元素 https://leetcode.cn/problems/top-k-frequent-elements/ 描述 给你一个整数数组 nums 和一个整数 k #xff0c;请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2]示例 2 输入: num…前K个高频元素 https://leetcode.cn/problems/top-k-frequent-elements/ 描述 给你一个整数数组 nums 和一个整数 k 请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2]示例 2 输入: nums [1], k 1 输出: [1]提示 1 nums.length 1 0 5 10^5 105k 的取值范围是 [1, 数组中不相同的元素的个数]题目数据保证答案唯一换句话说数组中前 k 个高频元素的集合是唯一的 进阶 你所设计算法的时间复杂度 必须 优于 O(n log n) 其中 n 是数组大小。 算法实现 1 使用堆排序 class MinHeap {heap: Recordstring, any[] [];// 交换节点位置swap(i1, i2) {[this.heap[i1], this.heap[i2]] [this.heap[i2], this.heap[i1]];}// 获得父节点getParentIndex(i) {return (i - 1) 1;}// 获取左子节点getLeftIndex(i) {return (i 1) 1; // 极客写法}// 获取右子节点getRightIndex(i) {return (i 1) 2;}// 向上移动shiftUp(index) {// 如果到了堆顶元素index是0则不要再上移了if(!index) {return;}let parentIndex this.getParentIndex(index)if(this.heap[parentIndex]?.value this.heap[index].value) {this.swap(parentIndex, index)this.shiftUp(parentIndex)}}// 下移shiftDown(index) {// 边界1如果到了堆尾元素则不要再下移了if(index this.heap.length - 1) {return;}const size this.size();const leftIndex this.getLeftIndex(index);const rightIndex this.getRightIndex(index);if (leftIndex size this.heap[leftIndex]?.value this.heap[index].value) {this.swap(leftIndex, index);this.shiftDown(leftIndex);}// 注意这里的 this.heap[index].value 和上面重复不能使用变量因为上个if中存在 swap 和 shiftDown, 使用变量有可能出问题if (rightIndex size this.heap[rightIndex]?.value this.heap[index].value) {this.swap(rightIndex, index);this.shiftDown(rightIndex);}}// 插入insert(value) {this.heap.push(value);this.shiftUp(this.heap.length - 1);}// 删除堆顶pop() {// pop()方法删除数组最后一个元素并返回赋值给堆顶this.heap[0] this.heap.pop();// 对堆顶重新排序this.shiftDown(0);}// 获取堆顶peak() {return this.heap[0];}// 获取堆的大小size() {return this.heap.length;} }function topKFrequent(nums: number[], k: number): number[] {let map new Map();nums.forEach(n {map.set(n, map.has(n)? map.get(n) 1 : 1);})const h new MinHeap();map.forEach((value, key) {h.insert({value, key});// 保证堆的尺寸是k(h.size() k) h.pop();})return h.heap.map(a a.key); }这里改造了之前的 MinHeap 最小堆类原来是值比较现在是对象的比较 2 使用字典 function topKFrequent(nums: number[], k: number): number[] {let map new Map();nums.forEach(n {map.set(n, map.has(n)? map.get(n) 1 : 1);})// console.log(map); // 这是一个map结构// console.log(Array.from(map)); // 将map转换为二维数组[[值, 频率], [值, 频率]] 这是无序的// 对Array.from(map)产生的二维矩阵进行频率的排序const list Array.from(map).sort((a,b) b[1] - a[1])return list.slice(0, k).map(i i[0]); // 返回按频率排序的前K个元素值 }统计每个元素出现的次数(频率)通过Map结构来处理分析时间复杂度O(nlogn)一个forEach循环O(n)原生sort排序O(nlogn)总体来说O(nlogn)如果题目要求返回的前K个高频元素不考虑顺序我们一下就要想到用堆排序
http://www.huolong8.cn/news/227925/

相关文章:

  • 郑州网站建设设计公司哪家好品牌建设政策
  • 手机网站设计制作公司投诉网站建设
  • 订阅号怎么做免费的视频网站吗wordpress设置静态访问不了
  • 福永附近做网站公司七宝网站建设
  • 东昌府聊城网站建设在线flash相册网站源码
  • 营销型网站建设主要教学内容做微网站的公司哪家好
  • 邯郸住房和城乡建设局网站网站开发模板用什么
  • 企业网站搭建 网络活动策划阿里云wordpress插件
  • 公司网站建设费会计处理公司网站设计模板
  • 上海工厂网站建设义乌兼职网站建设
  • 集团网站建设流程织梦网站动态
  • 淄博建设企业网站自助建站
  • 网站优化一般要怎么做电话营销
  • 如何建设网站功能设计wordpress未收到验证码
  • 网站不收录原因和wordpress
  • 深圳 网站科技新手做网站推荐
  • wordpress站长统计插件wordpress七牛云储存图片
  • 网站免费建站众享星球长沙网站seo外包
  • 汽车做网站柳河网站建设
  • 做网站的基本要求怎样用模板做网站
  • 网站前缀带wap的怎么做正规app软件开发报价
  • 怎样查询江西省城乡建设厅网站谷歌浏览器下载手机版官网中文
  • 河北网站建设价格开发商和承建商的区别
  • 杭州网站建设市场wordpress实现付费浏览
  • 番禺学校网站建设建议旅游网站项目策划书
  • 网站排行榜查询网站建设期间注意事项
  • 宜兴网站建设哪家好品牌推广的步骤
  • 做实验流程图的网站如何制作主页
  • 微网站自助建站手机短视频网站的建设
  • 电商网站方案网站设计策划