《零基础Go语言算法实战》【题目 4-2】使用 Go 语言实现一个模拟栈数据结构操作的类 FrequencyStack

news/2025/1/16 2:25:14 标签: go语言, web编程, 算法, 程序员, go web

《零基础Go语言算法实战》

【题目 4-2】使用 Go 语言实现一个模拟栈数据结构操作的类 FrequencyStack

FrequencyStack 有两个功能:push(int x) 方法将整数 x 压入栈,pop() 方法将栈中出现频次

最高的元素删除并返回;如果出现频次最高的元素存在相同的数量,则最接近栈顶部的元素

将被删除并返回。

【解答】

package main

import "fmt"

type FrequencyStack struct {

 freq map[int]int

 group map[int][]int

 maxfreq int

}

func NewFrequencyStack() FrequencyStack {

 hash := make(map[int]int)

 maxHash := make(map[int][]int)

 return FrequencyStack{freq: hash, group: maxHash}

}

func (fs *FrequencyStack) Push(x int) {

 if _, ok := fs.freq[x]; ok {

 fs.freq[x]++

 } else {

 fs.freq[x] = 1

 }

 f := fs.freq[x]

 if f > fs.maxfreq {

 fs.maxfreq = f

 }

 fs.group[f] = append(fs.group[f], x)

}

func (fs *FrequencyStack) Pop() int {

 tmp := fs.group[fs.maxfreq]

 x := tmp[len(tmp)-1]

 fs.group[fs.maxfreq] = fs.group[fs.maxfreq][:len(fs.group[fs.maxfreq])-1]

 fs.freq[x]--

 if len(fs.group[fs.maxfreq]) == 0 {

 fs.maxfreq--

 }

 return x

}


http://www.niftyadmin.cn/n/5824557.html

相关文章

在 Webpack 中使用 预加载(Preloading) 技术可以通过动态导入(import())以及指定预加载的方式来进行优化

1. Webpack 中的预加载和预获取 Webpack 提供了两种注释: /* webpackPreload: true */:用于预加载当前页面需要的关键资源。/* webpackPrefetch: true */:用于预获取未来可能用到的资源(如下一个页面的资源)。 2. 如…

备战蓝桥杯 队列和queue详解

目录 队列的概念 队列的静态实现 总代码 stl的queue 队列算法题 1.队列模板题 2.机器翻译 3.海港 双端队列 队列的概念 和栈一样,队列也是一种访问受限的线性表,它只能在表头位置删除,在表尾位置插入,队列是先进先出&…

【练习】力扣热题100 有效的括号

题目 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括…

Nginx是什么?怎么用?

Nginx介绍 Nginx (读作 “engine-x”) 是一款高性能的HTTP和反向代理服务器,同时也可用作IMAP/POP3/SMTP代理服务器。由俄罗斯程序员Igor Sysoev开发,首次公开发布于2004年。Nginx以其稳定性、高性能和低内存消耗闻名,尤其擅长处理静态文件、…

SpringBoot之OriginTrackedPropertiesLoader类源码学习

源码解析 /*** 作用是从给定的资源(如文件或输入流)中加载 .properties 文件,* 并将属性键值对转换为带有来源信息(origin)的 OriginTrackedValue 对象。*/ public class OriginTrackedPropertiesLoader {private fin…

金融项目实战 06|Python实现接口自动化——日志、实名认证和开户接口

目录 一、日志封装及应用(理解) 二、认证开户接口脚本编写 1、代码编写 1️⃣api目录 2️⃣script目录 2、BeautifulSoup库 1️⃣简介及例子 2️⃣提取html数据工具封装 3、认证开户参数化 一、日志封装及应用(理解) &…

论文笔记(六十一)Implicit Behavioral Cloning

Implicit Behavioral Cloning 文章概括摘要1 引言2 背景:隐式模型的训练与推理3 隐式模型与显式模型的有趣属性4 policy学习成果5 理论见解:隐式模型的通用逼近性6 相关工作7 结论 文章概括 引用: inproceedings{florence2022implicit,titl…

util层注入service

简介背景 在 Java 或 Spring 框架中,util 层通常用于存放工具类或辅助类,而 service 层则通常包含核心业务逻辑。在一些情况下,可能需要将 service 层注入到 util 层中,以便在工具类中调用某些业务逻辑。虽然这种做法并不是最常见…