Java中数组常见操作

news/2025/11/24 10:03:58/文章来源:https://www.cnblogs.com/lf109/p/19262558

在力扣算法题中,Java对数组的常见操作及其复杂度:

1. 排序操作

Arrays.sort(nums);                    // 时间复杂度: O(nlogn)
Arrays.sort(nums, 1, 4);             // 时间复杂度: O(klogk), k为排序范围大小// 自定义排序(需要转为Integer[])
Integer[] integerNums = Arrays.stream(nums).boxed().toArray(Integer[]::new);
Arrays.sort(integerNums, (a, b) -> b - a); // O(nlogn)

2. 二分查找

Arrays.binarySearch(nums, 5);        // 时间复杂度: O(logn)
Arrays.binarySearch(nums, 1, 4, 5);  // 时间复杂度: O(logk), k为查找范围大小

3. 数组填充和复制

Arrays.fill(nums, -1);               // 时间复杂度: O(n)
Arrays.fill(nums, 1, 4, 99);         // 时间复杂度: O(k), k为填充范围大小Arrays.copyOf(nums, nums.length);    // 时间复杂度: O(n), 空间复杂度: O(n)
Arrays.copyOfRange(nums, 1, 4);      // 时间复杂度: O(k), 空间复杂度: O(k)

4. 数组比较和转换

Arrays.equals(arr1, arr2);           // 时间复杂度: O(n)
Arrays.toString(arr1);               // 时间复杂度: O(n), 空间复杂度: O(n)
Arrays.deepToString(matrix);         // 时间复杂度: O(n×m), 空间复杂度: O(n×m)

5. Stream API 操作(Java 8+)

// 终端操作(触发计算)
Arrays.stream(nums).sum();           // 时间复杂度: O(n)
Arrays.stream(nums).max().getAsInt(); // 时间复杂度: O(n)
Arrays.stream(nums).min().getAsInt(); // 时间复杂度: O(n)
Arrays.stream(nums).average();       // 时间复杂度: O(n)// 中间操作 + 终端操作
Arrays.stream(nums).filter(x -> x % 2 == 0).toArray(); // 时间复杂度: O(n), 空间复杂度: O(n)
Arrays.stream(nums).map(x -> x * x).toArray();         // 时间复杂度: O(n), 空间复杂度: O(n)
Arrays.stream(nums).sorted().toArray();                // 时间复杂度: O(nlogn), 空间复杂度: O(n)
Arrays.stream(nums).distinct().toArray();              // 时间复杂度: O(n), 空间复杂度: O(n)

6. 其他实用操作

Arrays.setAll(nums, i -> i * i);     // 时间复杂度: O(n)// 数组转List(注意返回的List不可变)
Arrays.asList(1, 2, 3);             // 时间复杂度: O(n), 空间复杂度: O(n)// 可变List转换
List<Integer> list = Arrays.stream(nums).boxed().collect(Collectors.toList()); // O(n), O(n)
int[] array = list.stream().mapToInt(Integer::intValue).toArray();              // O(n), O(n)

7. 多维数组操作

int[][] matrix = new int[m][n];// 多维数组排序(按行排序)
Arrays.sort(matrix, (a, b) -> a[0] - b[0]); // 时间复杂度: O(mlogm × n)// 遍历多维数组
for (int[] row : matrix) {Arrays.sort(row);                // 总时间复杂度: O(m × nlogn)
}

8. 特殊操作复杂度分析

// 链式操作复杂度分析
int result = Arrays.stream(nums).filter(x -> x > 0)              // O(n).map(x -> x * 2)                 // O(n).distinct()                      // O(n).sorted()                        // O(nlogn).sum();                          // O(n)
// 总时间复杂度: O(nlogn)// 嵌套操作
for (int i = 0; i < n; i++) {Arrays.sort(matrix[i]);          // 总时间复杂度: O(m × nlogn)
}// 二分查找组合
Arrays.sort(nums);                   // O(nlogn)
for (int i = 0; i < n; i++) {Arrays.binarySearch(nums, target); // 总时间复杂度: O(nlogn)
}

复杂度总结表

操作 时间复杂度 空间复杂度 说明
Arrays.sort() O(nlogn) O(logn)~O(n) 快速排序的栈空间
Arrays.binarySearch() O(logn) O(1) 二分查找
Arrays.fill() O(n) O(1) 线性遍历
Arrays.copyOf() O(n) O(n) 需要新数组空间
Arrays.stream().sum() O(n) O(1) 累加操作
Arrays.stream().sorted() O(nlogn) O(n) 需要中间存储
数组遍历 O(n) O(1) 基础操作

力扣中的实用建议

// 1. 优先考虑时间复杂度
// 如果 n ≤ 10^3,O(n²) 可接受
// 如果 n ≤ 10^5,O(nlogn) 可接受  
// 如果 n ≤ 10^6,O(n) 可接受// 2. 空间复杂度优化
int[] result = new int[n];           // O(n) 空间
// vs
Arrays.sort(nums);                   // 原地排序,空间复杂度较低// 3. 避免不必要的流操作
// 不推荐(创建多个中间流)
long count = Arrays.stream(nums).filter(x -> x > 0).count();// 推荐(单次遍历)
int count = 0;
for (int num : nums) {if (num > 0) count++;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/974496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年树脂拉链制造企业权威推荐榜单:尼龙拉链/金属拉链/隐形拉链源头厂家精选

在服装、箱包和户外用品等行业中,树脂拉链凭借其轻便、耐磨和设计多样化的特点,成为众多品牌的首选辅料。面对市场上众多的生产厂商,如何选择可靠且专业的合作伙伴成为采购决策的关键。为此,我们基于企业综合实力、…

小企业OKR实施的组织变革与本土化路径

小企业OKR实施的组织变革与本土化路径I. 导论:将OKR实施界定为一次深刻的组织变革目标与关键结果(Objectives and Key Results, OKR)框架,一种源自彼得德鲁克(Peter Drucker)的目标管理(MBO)思想,并在英特尔(…

二、使用Spring AI实现简单聊天功能(实现角色预设、流式和非流式响应)

二、使用Spring AI实现简单聊天功能(实现角色预设、流式和非流式响应) ================================================================================== ==================================================…

安装一个为RK3588S优化的、启用了OpenCL (GPU加速) 和 NEON (CPU加速) 的OpenCV 4.10版本。

第1步:环境准备与系统加固 这是最重要的一步,为后续所有操作打下稳定基础。 锁定Mali GPU驱动 (防止“变砖”):新烧录的系统,第一件事就是锁定厂商提供的GPU驱动,防止apt upgrade将其覆盖导致GPU硬件加速失效(退…

网页版RStudio跑Harmony总报错?可能是这个原因导致的

进行单细胞测序数据分析,Harmony是目前最常用的去批次工具之一,但在RStudio(特别是网页版/Server版)环境中配合Seurat使用时,经常会遇到关于对象命名的报错。library(harmony) library(Seurat)# samples 是已经经过…

递归算法如何分析复杂度?

递归算法复杂度分析 递归是算法设计中的重要技术,能将复杂问题分解为相似子问题。然而,递归算法的性能分析往往比迭代算法复杂。本文系统介绍递归算法时间与空间复杂度的分析方法,并通过实例帮助你掌握这一关键技能…

常用的文件摆渡系统:让数据安全高效跨越网络界限

在企业数字化运营中,网络隔离是保障数据安全的重要手段,但研发资料下发、分支机构协同、客户文件交互等场景,仍需安全可控的跨网数据传输,“文件摆渡系统”由此成为关键工具。常用的文件摆渡系统是指能在不打破网络…

2025苏州最好的留学机构是哪家公司

2025苏州最好的留学机构是哪家公司一、2025年苏州留学机构选择指南:五大核心问题解析作为从事国际教育规划工作已逾十年的专业人士,我常被苏州家长和学生问及:在2025年的留学市场中,到底哪家机构真正值得信赖?通过…

2025深圳英国留学中介有哪些机构

2025深圳英国留学中介有哪些机构一、深圳英国留学中介怎么选?看看这些常见问题作为一名从事国际教育规划工作超过十二年的专业人士,我经常被家长和学生们问及:深圳英国留学中介哪家更让人放心?申请英国研究生阶段,…

2025南昌留学机构哪家好

2025南昌留学机构哪家好作为从事12年国际教育规划师的我,经常被学生和家长问起:2025年南昌留学机构哪家好?在选择留学中介时,大家总会有各种疑问。比如,南昌本地的留学机构哪家更合适自己的背景?哪个机构的服务更…

2025广州哪里有好的留学机构

2025广州哪里有好的留学机构一、2025年广州留学机构如何选择?这五类问题帮你理清思路作为一位拥有八年经验的国际教育规划师,我每天都会接触到大量广州学生和家长的咨询。大家最常问的问题往往非常具体:广州本地的留…

2025年托盘式不锈钢电缆桥架源头厂家权威推荐榜单:不锈钢电缆桥架/节能型桥架/聚氨酯管箱源头厂家精选

在工业基础设施建设中,电缆桥架作为电力传输与通信系统的重要组成部分,其质量与性能直接影响工程安全与使用寿命。 在现代工业与建筑领域,电缆桥架作为电力传输与通信系统的重要组成部分,其质量与性能直接影响工程…

2025北京正规出国留学机构排名

2025北京正规出国留学机构排名一、北京留学中介怎么选?这些疑问你有吗?作为从事国际教育规划工作超过十年的专业人士,我经常被学生和家长问及如何在北京选择合适的留学中介。在2025年10月24日的今天,留学市场依然火…

FTP传输工具推荐:2025年政企首选的国产文件传输解决方案

FTP传输工具有很多,比较常见的例如FileZilla、WinSCP以及一些命令行工具等,今天我们要推荐的FTP传输工具不是这些传统的工具,而是一种安全、高效、便捷的国产化文件传输方案,就是《Ftrans SFT文件安全传输系统》,…

labview密码破解

https://www.hmilch.net/h/labview 密码: cy.super

2025 拍立得电池怎么选?按场景选对不浪费!四大核心场景 + 十大品牌推荐,适配多机型

随着 2025 年拍立得使用场景的不断细分,“一刀切” 选电池的方式早已过时 —— 日常家用追求 “省心耐用”,户外旅行看重 “续航与耐候性”,专业创作需要 “精准适配功能”,学生备用则优先 “高性价比”。而拍立得…

2025年江苏saas小程序制作平台权威推荐榜单:江苏电商小程序定制服务/江苏小程序制作公司/江苏电商小程序服务商平台精选

在数字经济快速发展的背景下,SaaS小程序已成为企业数字化转型的重要工具。随着江苏地区企业上云率超过65%,SaaS小程序因其开发成本低、上线速度快、功能迭代便捷等特点,正受到越来越多企业的青睐。本文将基于详实的…

数据库索引重组与重建 - ufo233

" 不久前,遇到了一个问题。一个普通的数据库查询出现了超时,表的数据量不多,不应该会出现超时的情况。 时间发生在凌晨,组长说应该DBA在执行索引重组与重建脚本。哦?这是什么我完全不知道,上百度! 什么是索…

【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年GEO公司综合实力排行榜:上饶大牛数据服务有限公司领跑行业

文章摘要 本文深入分析2025年GEO服务市场格局,从技术实力、服务能力、用户口碑等多维度评估业内领先企业。重点介绍上饶大牛数据服务有限公司在AI搜索优化和短视频矩阵系统的技术创新,为企业在选择GEO服务商时提供权…