笔试强训 Day 36:提取不重复的整数、哈夫曼编码、abb
Day 36提取不重复的整数解题思路模拟代码实现importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){ScannerinnewScanner(System.in);int[]hashnewint[10];char[]cin.next().toCharArray();intnc.length;StringBuildersbnewStringBuilder();for(intin-1;i0;i--){if(hash[c[i]-0]1)continue;hash[c[i]-0];sb.append(c[i]);}System.out.println(sb.toString());}}哈夫曼编码解题思路使用哈夫曼编码时出现次数少的字符应放在树的更深处。每次选择当前出现次数最少的两个节点合并它们的所有字符编码长度都会增加1因此本次对总长度的贡献为两者出现次数之和。用小根堆维护所有节点权重将所有字符出现次数放入小根堆。每次取出最小的两个数x、y。合并为新节点x y将其加入答案。将x y放回堆中。重复直到堆中只剩一个节点。最终累加值就是最短ß编码长度。时间复杂度O(n log n)空间复杂度O(n)代码实现importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){ScannerinnewScanner(System.in);intnin.nextInt();// 小根堆每次 poll() 取出最小值PriorityQueueLongpqnewPriorityQueue();for(inti0;in;i){pq.offer(in.nextLong());}longans0;// 不断合并当前最小的两个节点// 只有一种字符时不需要区分它和其他字符可以用长度为 0 的空编码因此编码总长度为 0。while(pq.size()1){longxpq.poll();// 最小longypq.poll();// 次小longsumxy;anssum;// 新的父节点放回去继续参与下一轮合并pq.offer(sum);}System.out.println(ans);}}abb解题思路线性 dp难在统计二元组数量的方式代码实现importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){ScannerinnewScanner(System.in);intnin.nextInt();char[]sin.next().toCharArray();// 记录前面的每种字符的个数long[]cntnewlong[26];// 记录前面出现的不同二元组的个数, 每个元素表示以其为末尾, 二元组的数量long[]pairnewlong[26];// 记录前面出现的字符个数longtotal0;// 记录 abb 出现个数longret0;for(inti0;in;i){intcs[i]-a;// 以 c 为末尾的 xcc 数量retpair[c];// 更新二元组, 表示以当前字符为末尾的二元组数量// err: 累加, 以当前 c 为结尾, 前面与 c 不同, 新组成的二元组数量pair[c]total-cnt[c];total;cnt[c];}System.out.println(ret);}}

相关新闻

单元测试:代码的“健康体检“

单元测试:代码的“健康体检“

【752】单元测试:代码的"健康体检" 想象你买了辆车。 新车出厂前: 发动机测试 刹车测试 灯光测试 安全气囊测试 代码发布前: 单元测试 集成测试 系统测试 验收测试 单元测试就是代码的"出厂测试"——每个零件都正常工作,整车才可靠。 一、单元测试是…

2026/8/7 22:33:22 阅读更多 →
banan-os 移植实战:如何为新硬件架构适配操作系统内核

banan-os 移植实战:如何为新硬件架构适配操作系统内核

banan-os 移植实战:如何为新硬件架构适配操作系统内核 【免费下载链接】banan-os Mirror of banan-os, my hobby operating system 项目地址: https://gitcode.com/gh_mirrors/ba/banan-os 在开源操作系统的世界里,硬件架构的适配是扩展系统兼容性…

2026/8/7 22:33:22 阅读更多 →
SlidingCard性能优化实践:内存管理与滑动流畅度提升技巧

SlidingCard性能优化实践:内存管理与滑动流畅度提升技巧

SlidingCard性能优化实践:内存管理与滑动流畅度提升技巧 【免费下载链接】SlidingCard Sliding cards with pretty gallery effects. 项目地址: https://gitcode.com/gh_mirrors/sl/SlidingCard SlidingCard是一款实现精美画廊效果的Android滑动卡片组件&…

2026/8/7 22:33:22 阅读更多 →

最新新闻

终极指南:如何用H5GG实现iOS游戏零代码内存编辑的完整教程

终极指南:如何用H5GG实现iOS游戏零代码内存编辑的完整教程

终极指南:如何用H5GG实现iOS游戏零代码内存编辑的完整教程 【免费下载链接】H5GG an iOS Mod Engine with JavaScript APIs & Html5 UI 项目地址: https://gitcode.com/gh_mirrors/h5/H5GG 你是否曾经看着游戏高手轻松修改游戏数值,却因为复杂…

2026/8/7 23:23:42 阅读更多 →
如何三分钟实现Windows通讯工具防撤回:终极逆向工程补丁指南

如何三分钟实现Windows通讯工具防撤回:终极逆向工程补丁指南

如何三分钟实现Windows通讯工具防撤回:终极逆向工程补丁指南 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitc…

2026/8/7 23:23:42 阅读更多 →
Selenium 4八大元素定位方法详解:从入门到实战避坑指南

Selenium 4八大元素定位方法详解:从入门到实战避坑指南

1. 项目概述:从“人狗大作战”到企业级自动化,元素定位是基石最近在社区里看到不少朋友在讨论“人狗大作战Python代码2023”这类趣味项目,还有人在找各种工具的安装破解方法。这让我想起自己刚学自动化那会儿,也是从各种小脚本、小…

2026/8/7 23:23:42 阅读更多 →
第十二届花样少年语言艺术展演全国总展演在成都圆满举行

第十二届花样少年语言艺术展演全国总展演在成都圆满举行

8月1日至5日,第十二届花样少年语言艺术展演全国总展演在成都天府国际会议中心举行。逾万名来自全国各地的青少年齐聚蓉城,以朗诵、演讲、戏剧等多样形式展示语言艺术风采。8月4日晚,展演压轴环节“艺术之夜”在四川大剧院举行。本届展演以“少…

2026/8/7 23:23:42 阅读更多 →
终极消息防撤回解决方案:RevokeMsgPatcher完整指南

终极消息防撤回解决方案:RevokeMsgPatcher完整指南

终极消息防撤回解决方案:RevokeMsgPatcher完整指南 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitcode.com/G…

2026/8/7 23:22:42 阅读更多 →
概念解释方法论:四支柱模型拆解术语,从内卷到抽象概念的深度理解

概念解释方法论:四支柱模型拆解术语,从内卷到抽象概念的深度理解

1. 项目概述:为什么我们需要“概念解释”?在信息爆炸的时代,我们每天都会接触到大量新名词、新术语。从科技领域的“大模型”、“向量数据库”,到职场中的“OKR”、“第二曲线”,再到生活里的“松弛感”、“情绪价值”…

2026/8/7 23:22:42 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →