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

使用Set和Map解题思路

前言

Set和Map这两种数据结构,在解决一些题上,效率很高。跟大家简单分享一些题以及如何使用Set和Map去解决这些题目。

题目链接

136. 只出现一次的数字 - 力扣(LeetCode)

138. 随机链表的复制 - 力扣(LeetCode)

旧键盘 (20)__牛客网

692. 前K个高频单词 - 力扣(LeetCode)

解题思路

一些题目的代码实现 

import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class Test1 {//获取单词出现了多少次public static void main(String[] args) {String[] words={"Maybe","Maybe","hello","happy","sadness"};Map<String,Integer> map=countword(words);//使用map.entrySet()遍历mapSet<Map.Entry<String,Integer>> entrySet=map.entrySet();//entrySet里面放的是Map.Entry<k,v>类型的for(Map.Entry<String,Integer> s:entrySet){System.out.println("key "+s.getKey()+" "+"val "+s.getValue());}}private static Map<String,Integer> countword(String[] words) {Map<String,Integer> map=new HashMap<>();//统计每个单词出现了多少次for(String s:words){if(map.get(s)==null){//则没有出现过一次map.put(s,1);}else{int val=map.get(s);map.put(s,val+1);}}return map;}
}
import java.util.HashSet;
import java.util.Locale;
import java.util.Scanner;
import java.util.Set;public class Test2 {public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) {//这个是应该被输入的String a = in.nextLine();//这个是实际上被输入的String b = in.nextLine();a=a.toUpperCase();b=b.toUpperCase();Set<Character> set=new HashSet<>();for(int i=0;i<b.length();i++){char ch=b.charAt(i);set.add(ch);}Set<Character> set1=new HashSet<>();for(int i=0;i<a.length();i++){char ch=a.charAt(i);if(!set.contains(ch)&&!set1.contains(ch)){set1.add(ch);System.out.print(ch);}}}}
}
import java.util.*;public class Test3 {public List<String> topKFrequent(String[] words, int k) {Map<String,Integer> map=new HashMap<>();//统计单词出现的次数for(String word:words){if(map.get(word)==null){map.put(word,1);}else{int val=map.get(word);map.put(word,val+1);}}//成为Top-k问题,创建小根堆PriorityQueue<Map.Entry<String,Integer>> minHeap=new PriorityQueue<>(new Comparator<Map.Entry<String, Integer>>() {@Overridepublic int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {if(o1.getValue().compareTo(o2.getValue())==0){return o2.getKey().compareTo(o1.getKey());}return o1.getValue().compareTo(o2.getValue());}});//遍历mapfor(Map.Entry<String,Integer> entry:map.entrySet()){if(minHeap.size()<k){minHeap.offer(entry);}else{Map.Entry<String,Integer> top=minHeap.peek();if(top.getValue().compareTo(entry.getValue())<0){minHeap.poll();minHeap.offer(entry);}if(top.getValue().compareTo(entry.getValue())==0){if(top.getKey().compareTo(entry.getKey())>0){minHeap.poll();minHeap.offer(entry);}}}}//此时的大根堆里面一定是前k个高频单词List<String> list=new ArrayList<>();for(int i=0;i<k;i++){Map.Entry<String,Integer> tmp=minHeap.poll();list.add(tmp.getKey());}//Collections专门用来处理集合Collections.reverse(list);return list;}public static void main(String[] args) {}
}

结语 

再见~

 

 

 

 

相关文章:

使用Set和Map解题思路

前言 Set和Map这两种数据结构,在解决一些题上&#xff0c;效率很高。跟大家简单分享一些题以及如何使用Set和Map去解决这些题目。 题目链接 136. 只出现一次的数字 - 力扣&#xff08;LeetCode&#xff09; 138. 随机链表的复制 - 力扣&#xff08;LeetCode&#xff09; 旧…...

Java 算法入门:从基础概念到实战示例

在计算机科学领域&#xff0c;算法如同魔法咒语&#xff0c;能够将无序的数据转化为有价值的信息。对于 Java 开发者而言&#xff0c;掌握算法不仅是提升编程能力的关键&#xff0c;更是解决复杂问题的核心武器。本文将带领你走进 Java 算法的世界&#xff0c;从基础概念入手&a…...

【大模型】图像生成:ESRGAN:增强型超分辨率生成对抗网络的革命性突破

深度解析ESRGAN&#xff1a;增强型超分辨率生成对抗网络的革命性突破 技术演进与架构创新核心改进亮点 环境配置与快速入门硬件要求安装步骤 实战全流程解析1. 单图像超分辨率重建2. 自定义数据集训练3. 视频超分处理 核心技术深度解析1. 残差密集块&#xff08;RRDB&#xff0…...

记录搭建自己的应用中心-需求看板搭建

记录搭建自己的应用中心-需求看板搭建 人员管理新增用户组织用户登录和操作看板状态看板任务通知任务详情 人员管理 由于不是所有人都有应用管理权限&#xff0c;所以额外做了一套应用登录权限&#xff0c;做了一个新的组织人员表&#xff0c;一个登录账户下的所有应用人员共享…...

探秘数据结构:构建高效算法的灵魂密码

摘要 数据结构作为计算机科学的基石&#xff0c;其设计与优化直接影响算法效率、资源利用和系统可靠性。本文系统阐述数据结构的基础理论、分类及其核心操作&#xff0c;涵盖数组、链表、栈、队列、树、图、哈希表与堆等经典类型。深入探讨各结构的应用场景与性能对比&#xf…...

多节点监测任务分配方法比较与分析

多监测节点任务分配方法是分布式系统、物联网&#xff08;IoT&#xff09;、工业监测等领域的核心技术&#xff0c;其核心目标是在资源受限条件下高效分配任务&#xff0c;以优化系统性能。以下从方法分类、对比分析、应用场景选择及挑战等方面进行系统阐述&#xff1a; 图1 多…...

spring-boot-maven-plugin 将spring打包成单个jar的工作原理

spring-boot-maven-plugin 是 Spring Boot 的 Maven 插件&#xff0c;它的核心功能是将 Spring Boot 项目打包成一个独立的、可执行的 Fat JAR&#xff08;包含所有依赖的 JAR 包&#xff09;。以下是它的工作原理详解&#xff1a; 1. 默认 Maven 打包 vs Spring Boot 插件打包…...

盐化行业数字化转型规划详细方案(124页PPT)(文末有下载方式)

资料解读&#xff1a;《盐化行业数字化转型规划详细解决方案》 详细资料请看本解读文章的最后内容。 该文档聚焦盐化行业数字化转型&#xff0c;全面阐述了盐化企业信息化建设的规划方案&#xff0c;涵盖战略、架构、实施计划、风险及效益等多个方面&#xff0c;旨在通过数字化…...

开源革命:从技术共享到产业变革——卓伊凡的开源实践与思考-优雅草卓伊凡

开源革命&#xff1a;从技术共享到产业变革——卓伊凡的开源实践与思考-优雅草卓伊凡 一、开源的本质与行业意义 1.1 开源软件的定义与内涵 当卓伊凡被问及”软件开源是什么”时&#xff0c;他给出了一个生动的比喻&#xff1a;”开源就像将食谱公之于众的面包师&#xff0c…...

解锁 C++26 的未来:从语言标准演进到实战突破

一、C26 的战略定位与开发进展 C26 的开发已进入功能冻结阶段&#xff0c;预计 2026 年正式发布。作为 C 标准委员会三年一迭代的重要版本&#xff0c;其核心改进聚焦于并发与并行性的深度优化&#xff0c;同时在内存管理、元编程等领域实现重大突破。根据 ISO C 委员会主席 H…...

terraform实现本地加密与解密

在 Terraform 中实现本地加密与解密&#xff08;不依赖云服务&#xff09;&#xff0c;可以通过 OpenSSL 或 GPG 等本地加密工具配合 External Provider 实现。以下是完整的安全实现方案&#xff1a; 一、基础架构设计 # 文件结构 . ├── secrets │ ├── encrypt.sh …...

黄雀在后:外卖大战新变局,淘宝+饿了么开启电商大零售时代

当所有人以为美团和京东的“口水战”硝烟渐散&#xff0c;外卖大战告一段落时&#xff0c;“螳螂捕蝉&#xff0c;黄雀在后”&#xff0c;淘宝闪购联合饿了么“闪现”外卖战场&#xff0c;外卖烽火再度燃起。 4 月30日&#xff0c;淘宝天猫旗下即时零售业务“小时达”正式升级…...

基本功能学习

一.enum枚举使用 E_SENSOR_REQ_NONE 的定义及用途 在传感器驱动开发或者电源管理模块中&#xff0c;E_SENSOR_REQ_NONE通常被用来表示一种特殊的状态或请求模式。这种状态可能用于指示当前没有活动的传感器请求&#xff0c;或者是默认初始化状态下的一种占位符。 可能的定义…...

59常用控件_QComboBox的使用

目录 代码示例:使用下拉框模拟麦当劳点餐 代码示例&#xff1a;从文件中加载下拉框的选项 QComboBox表示下拉框 核心属性 属性说明currentText当前选中的文本currentIndex当前选中的条目下标。 从 0 开始计算。如果当前没有条目被选中&#xff0c;值为 -1editable是否允许修改…...

卡洛诗西餐的文化破圈之路

在餐饮市场的版图上&#xff0c;西餐曾长期被贴上“高端”“舶来品”“纪念日专属”的标签&#xff0c;直到卡洛诗以高性价比西餐的定位破局&#xff0c;将意大利风情与家庭餐桌无缝衔接。这场从异国符号到家常选择的转型&#xff0c;不仅是商业模式的创新&#xff0c;更是一部…...

Python-57:Base32编码和解码问题

问题描述 你需要实现一个 Base32 的编码和解码函数。 相比于 Base32&#xff0c;你可能更熟悉 Base64&#xff0c;Base64 是非常常见的用字符串形式表示二进制数据的方式&#xff0c;在邮件附件、Web 中的图片中都有广泛的应用。 Base32 是 Base64 的变种&#xff0c;与 Bas…...

【排序算法】八大经典排序算法详解

一、直接选择排序&#xff08;Selection Sort&#xff09;算法思想算法步骤特性分析 二、堆排序&#xff08;Heap Sort&#xff09;算法思想关键步骤特性分析 三、直接插入排序&#xff08;Insertion Sort&#xff09;算法思想算法步骤特性分析 四、希尔排序&#xff08;Shell …...

近端策略优化PPO详解:python从零实现

&#x1f9e0; 向所有学习者致敬&#xff01; “学习不是装满一桶水&#xff0c;而是点燃一把火。” —— 叶芝 我的博客主页&#xff1a; https://lizheng.blog.csdn.net &#x1f310; 欢迎点击加入AI人工智能社区&#xff01; &#x1f680; 让我们一起努力&#xff0c;共创…...

C# System.Text.Json终极指南(十):从基础到高性能序列化实战

一、JSON序列化革命:System.Text.Json的架构优势 1.1 核心组件解析 1.2 性能基准测试(.NET 8) 操作Newtonsoft.JsonSystem.Text.Json性能提升简单对象序列化1,200 ns450 ns2.7x大型对象反序列化15 ms5.2 ms2.9x内存分配(1k次操作)45 MB12 MB3.75x二、基础序列化操作精解 …...

Centos7.9 安装mysql5.7

1.配置镜像&#xff08;7.9的镜像过期了&#xff09; 2.备份原有的 CentOS 基础源配置文件 sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 3.更换为国内镜像源 sudo vi /etc/yum.repos.d/CentOS-Base.repo 将文件内容替换为以下内容&am…...

Qt指南针

Qt写的指南针demo. 运行结果 滑动调整指针角度 实现代码 h文件 #ifndef COMPASS_H #define COMPASS_H#include <QWidget> #include <QColor>class Compass : public QWidget {Q_OBJECT// 可自定义属性Q_PROPERTY(QColor backgroundColor READ backgroundColor WRI…...

杜邦分析法

杜邦分析法(DuPont Analysis)是一种用于分析企业财务状况和经营绩效的综合分析方法,由美国杜邦公司在20世纪20年代率先采用,故得名。以下是其相关内容介绍: 核心指标与分解 净资产收益率(ROE):杜邦分析法的核心指标,反映股东权益的收益水平,用以衡量公司运用自有资本…...

给U盘加上图标

电脑插入U盘后&#xff0c;U盘的那个标志没有特色&#xff0c;我们可以换成有意义的照片作为U盘图标&#xff0c;插上U盘就能看到&#xff0c;多么地浪漫。那该如何设置呢&#xff1f;一起来看看吧 选择一张ICO格式的图片到U盘里 PNG转ICO - 在线转换图标文件PNG转ICO - 免费…...

人工智能对未来工作的影响

人工智能对未来工作的影响是多方面的&#xff0c;既包括对就业结构的改变&#xff0c;也涉及工作方式、职业技能需求以及社会政策的调整。以下是对人工智能对未来工作影响的详细分析&#xff1a; 一、就业结构的变革 岗位替代与消失 人工智能技术在许多领域展现出强大的自动化…...

RocketMQ常见面试题一

1. RocketMQ 是什么?它的核心组件有哪些? 答:RocketMQ 是阿里巴巴开源的一款分布式消息中间件,支持高吞吐、低延迟、高可用的消息发布与订阅。 核心组件: NameServer:轻量级注册中心,管理 Broker 的元数据(路由信息),无状态。 Broker:消息存储和转发节点,分为 Mas…...

C++调试(壹):初步认识WinDbg和dump文件

目录 1.前言 2.WinDbg是什么&#xff1f; 3.​WinDbg安装 4.Dump文件是什么&#xff1f; ​ 5.生成Dump文件的场景 前言 这是一个关于C调试的博客&#xff0c;该系列博客主要是讲解如何使用WinDbg工具结合dump文件调试程序。在日常开发过程中&#xff0c;我们往往无法完…...

centos7 离线安装python3 保留python2

一、事前准备&#xff1a; &#xff08;1&#xff09;查看centos具体版本 cat /etc/redhat-releaseCentOS Linux release 7.4.1708 (Core) &#xff08;2&#xff09;查看linux中当前python版本 centos7 默认安装python2.7.5 &#xff08;3&#xff09;查看python3的依赖&#…...

【dify—9】Chatflow实战——博客文章生成器

目录 一、创建Chatflow 二、创建变量 三、添加时间工具 四、编写提示词 五、回复输出 六、运行 第一部分 安装difydocker教程&#xff1a;【difydocker安装教程】-CSDN博客 第二部分 dock重装教程&#xff1a;【dify—2】docker重装-CSDN博客 第三部分 dify拉取镜像&…...

华为OD机试真题——斗地主之顺子(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

2025 A卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C、GO六种语言的最佳实现方式&#xff1b; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析&#xff1b; 本文收录于专栏&#xff1a;《2025华为OD真题目录…...

3.2/Q2,Charls最新文章解读

文章题目&#xff1a;Internet usage elevates elderly obesity: evidence from a difference-in-differences analysis of the broadband China policy DOI&#xff1a;10.1186/s13690-025-01565-9 中文标题&#xff1a;互联网使用导致老年人肥胖&#xff1a;中国宽带政策差异…...

Seata服务端开启事务核心源码解析

文章目录 概述一、doGlobalBegin1.1、createGlobalSession1.2、addSessionLifecycleListener1.3、begin 概述 Seata服务端作为TC角色&#xff0c;用于接收客户端标注了GlobalTransactional也就是TM角色的开启事务&#xff0c;提交/回滚事务请求&#xff0c;维护全局和分支事务的…...

Seata服务端回滚事务核心源码解析

文章目录 前言一、doGlobalRollback3.1、changeGlobalStatus3.2、doGlobalRollback 前言 本篇介绍Seata服务端接收到客户端TM回滚请求&#xff0c;进行处理并且驱动所有的RM进行回滚的源码。 一、doGlobalRollback doGlobalRollback是全局回滚的方法&#xff1a;   首先依旧…...

PMP-第九章 项目资源管理(一)

项目资源管理概述 项目资源管理包括识别、获取和管理所需资源以完成项目的各个过程资源主要分为实物资源和人力资源&#xff1b;实物资源包括设备、材料和基础设施等团队资源或人员指的是人力资源团队资源管理与项目干系人管理有重叠的部分&#xff0c;本章重点关注组成项目团…...

【Unity】MVP框架的使用例子

在提到MVP之前&#xff0c;可以先看看这篇MVC的帖子&#xff1a; 【Unity】MVC的简单分享以及一个在UI中使用的例子 MVC的不足之处&#xff1a; 在MVC的使用中&#xff0c;会发现View层直接调用了Model层的引用&#xff0c;即这两个层之间存在着一定的耦合性&#xff0c;而MV…...

Matlab/Simulink - BLDC直流无刷电机仿真基础教程(四) - PWM调制模拟

Matlab/Simulink - BLDC直流无刷电机仿真基础教程&#xff08;四&#xff09; - PWM调制模拟 前言一、PWM调制技术基本原理二、仿真模型中加入PWM调制三、逆变电路MOS管添加体二极管四、模拟添加机械负载五、仿真模型与控制框图文章相关模型文件下载链接参考链接 前言 本系列文…...

x86架构详解:定义、应用及特点

一、x86架构的定义 x86 是由Intel公司开发的复杂指令集&#xff08;CISC&#xff09;处理器架构&#xff0c;起源于1978年的Intel 8086处理器&#xff0c;后续扩展至32位&#xff08;IA-32&#xff09;和64位&#xff08;x86-64&#xff09;。其名称来源于早期处理器型号的“8…...

C++学习-入门到精通-【3】控制语句、赋值、自增和自减运算符

C学习-入门到精通-【3】控制语句、赋值、自增和自减运算符 控制语句、赋值、自增和自减运算符 C学习-入门到精通-【3】控制语句、赋值、自增和自减运算符一、什么是算法二、伪代码三、控制结构顺序结构选择结构if语句if...else语句switch语句 循环结构while语句 四、算法详述&a…...

【Bootstrap V4系列】学习入门教程之 页面内容排版

Bootstrap V4 学习入门教程之 页面内容排版 按钮上的指针排版一、Global settings 全局设置二、Headings 标题2.1 Customizing headings 自定义标题2.2 Display headings 显示标题2.3 Lead 引导 三、Blockquotes 块引用3.1 Naming a source 命名源3.2 Alignment 对齐 四、Lists…...

GTA5(传承/增强) 13980+真车 超跑 大型载具MOD整合包+最新GTA6大型地图MOD 5月最新更新

1500超跑载具 1000普通超跑 1500真车超跑 各种军载具1000 各种普通跑车 船舶 飞机 1000 人物1500 添加式led载具1000 超级英雄最新版 添加添加式武器MOD1000 添加地图MOD500 添加超跑载具2000 当前共计1.2wMOD 4月2日更新 新增770menyoo地图 当前共计12770 新增48款超级英雄最新…...

目标文件的段结构及核心组件详解

目标文件&#xff08;如 .o 或 .obj&#xff09;是编译器生成的中间文件&#xff0c;其结构遵循 ELF&#xff08;Linux&#xff09;或 COFF&#xff08;Windows&#xff09;格式。以下是其核心段&#xff08;Section&#xff09;和关键机制的详细解析&#xff1a; 1. 目标文件的…...

60常用控件_QSpinBox的使用

目录 代码示例&#xff1a;调整麦当劳购物车中的份数 使⽤ QSpinBox 或者 QDoubleSpinBox 表⽰ "微调框", 它是带有按钮的输⼊框. 可以⽤来输⼊整 数/浮点数. 通过点击按钮来修改数值⼤⼩. 由于 SpinBox 和 QDoubleSpinBox ⽤法基本相同, 就只介绍 SpinBox 的…...

数据库Mysql_约束

将失败当作自己的老师&#xff0c;即使他会使自己难堪 ----------陳長生. 1.什么是数据库约束 数据库约束是在数据库中对表中的内容设定条件或者规则&#xff0c;设置了这些规则能使得数据更具体有准确性&#xff0c;可靠性。 2.约束类型 NOT NULL设置列不能为空UNIQUE设置列…...

C++笔记-继承(下)(包含派生类的默认成员函数,菱形继承等)

一.派生类的默认成员函数 1.14个常见默认成员函数 默认成员函数&#xff0c;默认的意思就是指我们不写&#xff0c;编译器会自动为我们生成一个&#xff0c;那么在派生类中&#xff0c;这几个成员函数是如何生成的呢&#xff1f; 1.派生类的构造函数必须调用基类的构造函数初…...

DeepSeek V3 训练策略:FP8混合精度与多Token预测

近年来,大规模语言模型取得重大突破,但其训练与部署成本也随之攀升。DeepSeek 系列开源模型致力于通过优化模型结构和训练策略来降低成本、提升性能。DeepSeek V3 融合了多种先进技术(如 FP8 低精度训练、DualPipe 双流水线机制、多Token 预测目标等),在保证模型能力的同时…...

开始一个vue项目

一、创建vite项目和配置 1、查看npm版本&#xff1a; npm --version 根据版本选择创建命令 # npm 6.x npm create vitelatest my-vue-product --template vue # npm 7 npm create vitelatest my-vue-product -- --template vue 2、依次执行&#xff1a; npm install n…...

世纪华通:从财报数据看其在游戏领域的成功与未来

引言 日前&#xff0c;世纪华通发布了2024年及2025年第一季度的财务报告。报告显示&#xff0c;公司不仅在过去一年取得了显著的营收增长&#xff0c;而且在国内外市场均有出色表现。特别是《无尽冬日》和《Whiteout Survival》等游戏的成功&#xff0c;为世纪华通带来了巨大的…...

ruoyi-plus Spring Boot + MyBatis 中 BaseEntity 的设计与动态查询实践

一、BaseEntity 设计解析 以下是一个典型的 BaseEntity 设计示例: @Data public class BaseEntity implements Serializable {@Serialprivate static final long serialVersionUID =...

MCP:智能家居的“大脑”,如何引领未来居住革命

MCP:智能家居的“大脑”,如何引领未来居住革命 一、引言:MCP与智能家居的未来 随着智能家居的迅猛发展,越来越多的家庭开始拥有各种智能设备,从智能灯泡、智能门锁到智能音响,每一个设备都在为生活提供便利与舒适。然而,尽管这些设备各自具备了独立的功能,但它们之间往…...

[基础]详解C++模板类(完整实例代码)

目录 C模板类&#xff1a;通用编程的基石引言一、模板类的核心作用1.1 代码复用1.2 类型安全1.3 性能优化 二、模板类的进阶用法2.1 多参数模板2.2 非类型参数2.3 成员函数特化 三、实战场景解析3.1 场景一&#xff1a;通用容器开发3.2 场景二&#xff1a;算法抽象3.3 场景三&a…...

Python 常用内置函数详解(九):type()函数——获取对象类型或获取一个新的类型对象

目录 一、功能二、语法和示例 一、功能 type() 函数有两种形式&#xff0c;当只有一个参数时&#xff0c;用于获取对象的类型&#xff1b;当有多个参数时&#xff0c;用于获取新的类型对象。 二、语法和示例 第一种&#xff1a; type(object)参数说明: 1.object: 对象 2.…...