博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lc 895. Maximum Frequency Stack 最大频率栈 JS
阅读量:5737 次
发布时间:2019-06-18

本文共 1249 字,大约阅读时间需要 4 分钟。

思路

每一个新元素被 pop,他的出现次数,是他前一个出现相同元素的 次数 + 1

注意节约资源。

代码

var FreqStack = function() {    this.stack = [];    this.disc = []; // 字典 帮助判断};/**  * @param {number} x * @return {void} */FreqStack.prototype.push = function(x) {    let count = 1;    if(this.disc.indexOf(x) < 0) { // 不存在        this.disc.push(x);    } else { // 之前确实有这个元素 从后向前找        let len = this.stack.length;        for(let i = len -1; i >= 0; --i) {            if(this.stack[i].value === x) {                count += this.stack[i].count;                break;            }        }    }        this.stack.push({        value: x,        count    });};/** * @return {number} */FreqStack.prototype.pop = function() {    let list = [];    let max = 0;    let len = this.stack.length;    let toRemoveIndex = -1;    for(let i = len - 1; i >= 0; --i) {        let obj = this.stack[i];        if(obj.count > max) {            max = obj.count;            list = [obj.value];            toRemoveIndex = i;        }    }    this.stack.splice(toRemoveIndex, 1);    return list[0];};/**  * Your FreqStack object will be instantiated and called as such: * var obj = Object.create(FreqStack).createNew() * obj.push(x) * var param_2 = obj.pop() */复制代码

转载于:https://juejin.im/post/5c6f3a305188252d56427134

你可能感兴趣的文章
利用Failovr Cluster的Hyper-v创建高可用虚拟机
查看>>
Windows Server 2016-管理站点复制(一)
查看>>
实战:将企业域名解析委派给企业DNS服务器
查看>>
ExtJS应用架构设计(三)
查看>>
在Lync 2013环境部署Office Web Apps
查看>>
微软大会Ignite,你准备好了么?
查看>>
读书笔记-高标管事 低调管人
查看>>
Master带给世界的思考:是“失控”还是进化
查看>>
用户和开发者不满苹果iCloud问题多多
查看>>
Windows 8上安装本地回环网卡
查看>>
一位多年老站长告白:如何用老域名让新站快速上首页
查看>>
iOS开发那些事-Passbook详解与开发案例(附视频)
查看>>
attrs.xml中declare-styleable 详解(用于自定义控件的属性)
查看>>
java.lang.UnsatisfiedLinkError:no dll in java.library.path终极解决之道
查看>>
严苛模式(StrictMode)
查看>>
错误“Unexpected namespace prefix "xmlns" found for tag LinearLayout”的解决方法(转)
查看>>
我的工具:文本转音频文件
查看>>
Jenkins(二)
查看>>
【许晓笛】从零开始运行EOS系统
查看>>
阿里云全面支持IPv6!一文揽尽4位大咖精彩演讲
查看>>