You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将代码从O(n^2)进一步优化为O(n)?

可以通过使用哈希表来达到线性时间复杂度,具体思路如下:

假设我们有一个长度为n的数组nums,现在想要找到数组中所有元素的出现次数。如果采用暴力的方法,需要两个for循环,时间复杂度为O(n^2)。

但是我们可以采用哈希表,把数组元素作为键,出现次数作为值存储在哈希表中。现在遍历数组的时间复杂度为O(n),而查找元素在哈希表中出现次数的时间复杂度为O(1),因此总时间复杂度为O(n)。

下面是具体的Java代码实现:

import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4, 4, 3, 2, 1, 5}; // 测试数组
        Map<Integer, Integer> map = new HashMap<>(); // 哈希表

        // 遍历数组,统计元素出现次数
        for (int num : nums) {
            if (map.containsKey(num)) {
                map.put(num, map.get(num) + 1);
            } else {
                map.put(num, 1);
            }
        }

        // 输出结果
        for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + "出现了" + entry.getValue() + "次");
        }
    }
}
本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS9.9元起,域名1元起,助力开发者快速在云上构建应用

社区干货

golang pprof

而计算机领域的profile指的就是进程的运行时特征,一般会包括CPU、内存、锁等多项运行时特征,从而让我们更方便的去优化我们程序的性能。golang是一个非常注重性能的语言(虽然有gc😂),所以golang内置了pprof工具来... 当然net/http/pprof只是为了方便我们通过外部接口来更方便的使用,其底层调用的也是runtime/pprof提供的各个接口。# 基本使用> 下文中使用的go代码和pprof工具都是基于golang 1.16## runtime/pprof```golan...

节省90%编译时间,这是字节跳动开源的基于Rust的前端构建工具

主要是做代码产物优化以及最终产物生成。 产物优化主要包括 tree-shaking 和 bundle-splitting, code-splitting 以及 minify。 tree-shaking 使用类似垃圾回收 mark-sweep 算法,遍历所有可能被... 2. Javascript(Node.js)3. Golang#### #### **为什么不用 JavaScript(Node.js) ?** 使用Node.js我们不用担心 API 兼容的问题,但是Node.js 单线程优化的潜力不大,所以尝试使用Node.js 提...

万字长文带你漫游数据结构世界|社区征文

System.out.print(temp.val + " -> "); temp = temp.next; } System.out.println(""); }}```测试代码如下:```javapublic class Test { public static vo... [](https://markdownpicture.oss-cn-qingdao.aliyuncs.com/blog/20220108175944.png)但是如果`hash`冲突比较严重,链表会比较长,查询的时候,需要遍历后面的链表,因此`JDK`优化了一版,链表的长度超过阈值的时候,会...

如何使用 Cluster Autoscaler 将批处理作业的节点扩容到 2000 个|KubeCon China

经过进一步的调研,我们发现主要原因是云盘服务的压力太大:一方面,云服务器自身在初始化 Kubernetes 组件的时候,比如安装系统软件包、从对象存储上拉取 Kubernetes 的安装包再解压等动作,是有磁盘写入的,一个节... 但代码还处于草稿阶段,具体的解决思路就是把计时器改成 **节点池级别**,每个节点池只针对自己的扩容过程做倒计时,不受其他节点池干扰。![picture.image](https://p6-volc-community-sign.byteimg.com/tos-c...

特惠活动

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

幻兽帕鲁游戏服务器4C16G3M

10人畅玩不卡顿,100%性能独享,每天只需0.7元
22.00/558.86/月
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

如何将代码从O(n^2)进一步优化为O(n)? -优选内容

golang pprof
而计算机领域的profile指的就是进程的运行时特征,一般会包括CPU、内存、锁等多项运行时特征,从而让我们更方便的去优化我们程序的性能。golang是一个非常注重性能的语言(虽然有gc😂),所以golang内置了pprof工具来... 当然net/http/pprof只是为了方便我们通过外部接口来更方便的使用,其底层调用的也是runtime/pprof提供的各个接口。# 基本使用> 下文中使用的go代码和pprof工具都是基于golang 1.16## runtime/pprof```golan...
节省90%编译时间,这是字节跳动开源的基于Rust的前端构建工具
主要是做代码产物优化以及最终产物生成。 产物优化主要包括 tree-shaking 和 bundle-splitting, code-splitting 以及 minify。 tree-shaking 使用类似垃圾回收 mark-sweep 算法,遍历所有可能被... 2. Javascript(Node.js)3. Golang#### #### **为什么不用 JavaScript(Node.js) ?** 使用Node.js我们不用担心 API 兼容的问题,但是Node.js 单线程优化的潜力不大,所以尝试使用Node.js 提...
万字长文带你漫游数据结构世界|社区征文
System.out.print(temp.val + " -> "); temp = temp.next; } System.out.println(""); }}```测试代码如下:```javapublic class Test { public static vo... [](https://markdownpicture.oss-cn-qingdao.aliyuncs.com/blog/20220108175944.png)但是如果`hash`冲突比较严重,链表会比较长,查询的时候,需要遍历后面的链表,因此`JDK`优化了一版,链表的长度超过阈值的时候,会...
如何使用 Cluster Autoscaler 将批处理作业的节点扩容到 2000 个|KubeCon China
经过进一步的调研,我们发现主要原因是云盘服务的压力太大:一方面,云服务器自身在初始化 Kubernetes 组件的时候,比如安装系统软件包、从对象存储上拉取 Kubernetes 的安装包再解压等动作,是有磁盘写入的,一个节... 但代码还处于草稿阶段,具体的解决思路就是把计时器改成 **节点池级别**,每个节点池只针对自己的扩容过程做倒计时,不受其他节点池干扰。![picture.image](https://p6-volc-community-sign.byteimg.com/tos-c...

如何将代码从O(n^2)进一步优化为O(n)? -相关内容

干货|8000字长文,深度介绍Flink在字节跳动数据流的实践

产品埋点的变动都可能导致UserAction的ETL规则的变动。如果ETL规则硬编码在代码中,每次修改都需要升级代码并重启Flink Job,会影响数据流稳定性和数据的时效性。因此,这个场景的 **另一个需求就是ETL规则的动态更... 进一步提升数据流ETL性能和稳定性,满足流量增长和需求增长的同时,降低资源成本和运维成本,是这一阶段的主要目标。我们主要从三个方面进行了优化:1. 优化引擎性能。随着流量和ETL规则的不断增加,基于Groovy的规...

如何使用 Cluster Autoscaler 将批处理作业的节点扩容到 2000 个

经过进一步的调研,我们发现主要原因是云盘服务的压力太大:一方面,云服务器自身在初始化 Kubernetes 组件的时候,比如安装系统软件包、从对象存储上拉取 Kubernetes 的安装包再解压等动作,是有磁盘写入的,一个节点... 但代码还处于草稿阶段,具体的解决思路就是把计时器改成 **节点池级别** ,每个节点池只针对自己的扩容过程做倒计时,不受其他节点池干扰。![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn...

字节跳动自研万亿级图数据库 & 图计算实践

开始从第一行代码开始踏上图数据库的漫漫征程,从解决一个最核心的抖音社交关系问题入手,逐渐演变为支持有向属性图数据模型、支持写入原子性、部分 Gremlin 图查询语言的通用图数据库系统,在公司所有产品体系落地,我... 从用户角度介绍了 ByteGraph 的适用场景和对外使用姿势。那 ByteGraph 架构是怎样的,内部是如何工作的呢,这一节就来从内部实现来作进一步介绍。下面这张图展示了 ByteGraph 的内部架构,其中 bg 是 ByteGraph 的...

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

幻兽帕鲁游戏服务器4C16G3M

10人畅玩不卡顿,100%性能独享,每天只需0.7元
22.00/558.86/月
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

基于 Flink 构建实时数据湖的实践

[picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/780103943dce4f268afe39b85a370e43~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1708791620&x-signature=Q2jcEF2mq... Flink OLAP 可以采取许多批处理操作和优化。同时,OLAP 中也存在大量查询,Flink 可以根据 Flink 的批处理的能力支持它们,而不需要像其他 OLAP 引擎那样引入外部批处理引擎;* Flink **支持 QUERY/INSERT/UPDATE 等...

Bundler 的设计取舍:为什么要开发 Rspack?

(这点给 Infra 团队带来非常大的 Oncall 压力),这也是我们开发 Web Doctor 的初衷,用来缓解团队自身的 Oncall压力。* 性能始终是 webpack 绕不开的话题,虽然我们尝试了各种 webpack 的优化方式,如 swc-loader、es... Rollup 和 webpack 的插件机制是截然不同的,虽然有类似 unplugin[2] 的上层封装,但是其 API 层仍然较为薄弱,难以提供较复杂的插件能力,尤其是对于 Modern.js 这种比较重型的框架,最终的效果往往是代码里充斥着各种...

如何使用 Cluster Autoscaler 将批处理作业的节点扩容到 2000 个

经过进一步的调研,我们发现主要原因是云盘服务的压力太大:一方面,云服务器自身在初始化 Kubernetes 组件的时候,比如安装系统软件包、从对象存储上拉取 Kubernetes 的安装包再解压等动作,是有磁盘写入的,一个节... 但代码还处于草稿阶段,具体的解决思路就是把计时器改成 **节点池级别**,每个节点池只针对自己的扩容过程做倒计时,不受其他节点池干扰。![picture.image](https://p6-volc-community-sign.byteimg.com/tos-c...

使用pytorch自己构建网络模型总结|社区征文

> 🍊作者简介:[秃头小苏](https://juejin.cn/user/1359414174686455),致力于用最通俗的语言描述问题>> 🍊专栏推荐:[深度学习网络原理与实战](https://juejin.cn/column/7138749154150809637)>> 🍊近期目标:写好专栏的每一篇文章>> 🍊支持小苏:点赞👍🏼、收藏⭐、留言📩> # 写在前面   前段时间在Git上下载了yolov5的代码,经过调试,最后运行成功。但是发现对网络训练的步骤其实很不熟悉,于是乎最近看了看基于py...

最新动态(2024年前)

创建实验接口 增加rpc调用失败兜底 开放平台草稿信息versions类型适配 应用接入去除name去重校验 2022年06月09日 V1.9.39版本 功能:【可视化实验】:可视化编辑器优化 新增元素:支持通过HTML代码的方式新增元素支... 点击热力图:适用于观察用户具体的点击行为,以此洞察页面的交互优化。(如:通过热力图发现页面的哪些部分吸引了大多数用户的注意,进一步优化;通过热力图发现用户经常会点击一些非连接/元素的地方,可以考虑在该位置...

Flink OLAP 在字节跳动的查询优化和落地实践

Flink OLAP 是数据仓库系统的重要应用,支持复杂的分析型查询,广泛应用于数据分析、商业决策等场景。本次分享将围绕字节 Flink OLAP 整体介绍、查询优化、集群运维和稳定性建设、收益以及未来规划五个方面展开介绍。... 从图中可以看出,在优化之前,Union All 节点的下游是一个 Local Aggregate 节点。由于当前 Flink Planner 不支持跨 Union All 的算子下推,导致这里的 Local Aggregate 节点无法下推到 Union All 的上游,也无法进一步...

特惠活动

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

幻兽帕鲁游戏服务器4C16G3M

10人畅玩不卡顿,100%性能独享,每天只需0.7元
22.00/558.86/月
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

幻兽帕鲁服务器搭建

云服务器
快速搭建幻兽帕鲁高性能服务器,拒绝卡顿,即可畅玩!
即刻畅玩

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

热门联机游戏服务器

低至22元/月,畅玩幻兽帕鲁和雾锁王国
立即部署

火山引擎·增长动力

助力企业快速增长
了解详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询