博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 442. 数组中重复的数据 java
阅读量:5102 次
发布时间:2019-06-13

本文共 681 字,大约阅读时间需要 2 分钟。

题目:

给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。

找到所有出现两次的元素。

你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?

示例:

输入:[4,3,2,7,8,2,3,1]输出:[2,3]

解题:

class Solution {    public List
findDuplicates(int[] nums) { List
res = new ArrayList<>(); if (nums == null || nums.length == 0) return res; for (int i = 0; i < nums.length; i++) { int index = Math.abs(nums[i]) - 1; if (nums[index] > 0) nums[index] *= -1; //用负号表示已经有一次了 else { res.add(index + 1); //index + 1 == Math.abs(nums[i]) } } return res; }}

 

转载于:https://www.cnblogs.com/yanhowever/p/10896984.html

你可能感兴趣的文章
一次动态sql查询订单数据的设计
查看>>
C# 类(10) 抽象类.
查看>>
Nginx+Keepalived 实现双击热备及负载均衡
查看>>
Vue_(组件通讯)子组件向父组件传值
查看>>
jvm参数
查看>>
Something-Summary
查看>>
Spring学习笔记
查看>>
6个有用的MySQL语句
查看>>
我对前端MVC的理解
查看>>
Silverlight实用窍门系列:19.Silverlight调用webservice上传多个文件【附带源码实例】...
查看>>
2016.3.31考试心得
查看>>
mmap和MappedByteBuffer
查看>>
Linux的基本操作
查看>>
转-求解最大连续子数组的算法
查看>>
算法为啥子那么难【转】
查看>>
对数器的使用
查看>>
OracleOraDb11g_home1TNSListener服务启动后停止,某些服务在未由其他服务或程序使用时将自己主动停止...
查看>>
Redis用户添加、分页、登录、注册、加关注案例
查看>>
练习2
查看>>
【ASP.NET】演绎GridView基本操作事件
查看>>