题目:查找数组中的重复数字,要求空间复杂度为O(1)(基于Java实现)

题目: 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。要求空间复杂度为O(1)。

虽然上述的题目是一道leetcode的简单题–(剑指 Offer 03. 数组中重复的数字),但是在leetcode当中的题目并没有要求空间复杂度为O(1),因此,这道题稍微要比 leetcode 难一点,而且,在面试各种大厂的时候,如果遇到这种看似简单的题,它是一定会给加上额外的条件的,而且这里又是说到数组,那么想都不用想,就是面试官肯定让你原地进行查找或者排序啥的,这都是套路了。。。。。

代码实现:

import java.util.ArrayList;
import java.util.List;/*
* 查找数组中的重复数字,要求是空间复杂度O(1)
* ① 查找数组的重复的数字,遇到一个重复数字就返回;
* ② 查找数组中的重复数字,将所有的重复数字打印出来。
* */
public class FindRepeatNumber {public static void main(String[] args) {int[] nums = new int[]{2,4,1,6,3,7,3,5,7,2};int t = findRepeatNumber(nums);System.out.println(t);System.out.println("-------");int[] nums1 = new int[]{4,5,2,3,4,5,3};List<Integer> res = findRepeatNumber1(nums1);for(int i = 0; i < res.size(); i++){System.out.println(res.get(i));}}//在数组中如果遇到了一个重复数字就直接返回。public static int findRepeatNumber(int[] nums) {int temp;for (int i = 0; i < nums.length; i++) {while (nums[i] != i) {if (nums[i] == nums[nums[i]]) {return nums[i];}temp = nums[i];nums[i] = nums[temp];nums[temp] = temp;}}return -1;}//将数组中全部的重复数字全部输出//虽然我这里借助一个集合,但是我在查找重复数字的时候始终是原地查找的,即空间复杂度为O(1)public static List<Integer> findRepeatNumber1(int[] nums) {int temp;List<Integer> res = new ArrayList<>();int[] arr;int j = 0;for (int i = 0; i < nums.length; i++) {while (nums[i] != i) {if (nums[i] == nums[nums[i]]) {res.add(nums[i]);break;}temp = nums[i];nums[i] = nums[temp];nums[temp] = temp;}}return res;}
}

输出的结果:

3
-------
4
5
3

题目:查找数组中的重复数字,要求空间复杂度为O(1)(基于Java实现)相关推荐

  1. lintcode :Remove Duplicates from Sorted Array II 删除排序数组中的重复数字 II

    题目: 删除排序数组中的重复数字 II 跟进"删除重复数字": 如果可以允许出现两次重复将如何处理? 样例 给出数组A =[1,1,1,2,2,3],你的函数应该返回长度5,此时A ...

  2. [剑指offer][JAVA]面试题第[03]题[数组中的重复数字][HashSet]

    [问题描述][数组中的重复数字][简单] 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道 ...

  3. C/C++面试之算法系列--去除数组中的重复数字

    去除数组中的重复数字 Sailor_forever  sailing_9806@163.com 转载请注明 http://blog.csdn.net/sailor_8318/archive/2008/ ...

  4. Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素-un

    ylbtech-Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素 1.返回顶部 1. Java 实例 - 查找数组中的重复元素  Java 实例 以下实例 ...

  5. np.unique( )--去除数组中的重复数字,并进行排序之后输出

    该函数是去除数组中的重复数字,并进行排序之后输出. 要求是 arr 里面是相同的维数. import numpy as npresult1 = np.unique([1, 1, 2, 2, 2, 3, ...

  6. 剑指offer系列-03.数组中的重复数字

    剑指offer系列第03题.数组中的重复数字 找出数组中重复的数字.在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内. 数组中某些数字是重复的,但不知道有几个数字重复了,也不 ...

  7. 删除排序数组中的重复数字 II · Remove Duplicates from Sorted Array II

    重复一次 [抄题]: 给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度. 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成. [思维问题]: [ ...

  8. Java实例-查找数组中的重复元素

    代码实现 public class MainClass {public static void main(String[] args) {int[] my_array = {1, 2, 5, 5, 6 ...

  9. 删除排序数组中的重复数字 II

    题目连接 http://www.lintcode.com/zh-cn/problem/remove-duplicates-from-sorted-array-ii/ 题目大意 跟进"删除重复 ...

最新文章

  1. 设计模式(2)工厂方法模式(Factory Method)
  2. 最新!TUI世界大学排名(2021)发布:清华位居全球前20名!
  3. Android之EventBus框架源码解析上(单例模式)
  4. 增加SYSTE表空间数据文件
  5. docker 镜像加速
  6. IE edge是怎么了??
  7. Jenkins构建 netcore5.0 项目时出现NU3028/NU3037错误的解决方案
  8. mysql中条件查询加排序和索引的关系
  9. UWP 保存用户设置
  10. 调试裕泰微yt8521s的phy芯片流程记录
  11. 全国计算机b类一级考试试题题库,全国计算机等级考试模拟题:一级B试题(一)...
  12. 汽车零部件智能工厂MES生产进度管理系统
  13. 【高数】如何由解倒求微分方程?及微分方程的阶数、任意常数、特征根的关系
  14. Win 10 Edge不能上网,微软商店打不开的问题
  15. 芯动力——硬件加速设计方法——学习笔记(1)
  16. django实现qq一键登录(qq互联)
  17. 服务器、存储和网络设备介绍
  18. tplink android管理软件,tplink手机app下载
  19. 如何确定包名和Activity值?
  20. docker mysql volum_Docker Volume

热门文章

  1. 【Netty】传输(Transport)
  2. mysql参数文件选项组_my.cnf文件关于组选项的总结
  3. 三分钟教会你搭建动态网络
  4. PHP验证码和Ajax验证
  5. weblogic创建域后启动不了_WebLogic的Azure虚拟机主要版本发布
  6. nbu oracle 冷备_NBU备份系统应用操作手册..doc
  7. 接口入参形式_某小公司RESTful、共用接口、前后端分离、接口约定的实践
  8. PTA 基础编程题目集 6-6 求单链表结点的阶乘和
  9. 【c语言】蓝桥杯算法提高 简单加法
  10. html修改headicon,index.html