zoukankan      html  css  js  c++  java
  • 剑指offer 面试题三 找出数组中重复的数字

     1 import org.junit.Test;
     2 
     3 import java.util.Arrays;
     4 import java.util.HashSet;
     5 
     6 public class Duplicate1 {
     7     /**
     8      * 剑指offer 面试题三 找出数组中重复的数字
     9      * 在一个长度为n的数组中的所有数字都在0~n-1的范围内。数组中某些数字是重复的,
    10      * 但不知道有几个数字是重复的,也不知道每个数字重复了几次。请找到数组中任意
    11      * 一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输
    12      * 出重复数字为2或者3
    13      * <p>
    14      * 按照书上的第一种解法,时间复杂度为O(n) 空间复杂度为O(1),不过我写的是找到所有的
    15      */
    16 
    17     public Integer[] findDuplicate(int[] numbers) {
    18         HashSet<Integer> hashSet = new HashSet<>();
    19 
    20         if (numbers == null || numbers.length == 0) {
    21             return null;
    22         }
    23         for (int i = 0; i < numbers.length; i++) {
    24             if (numbers[i] < 0 || numbers[i] > numbers.length - 1) {
    25                 return null;
    26             }
    27         }
    28 
    29         for (int i = 0; i < numbers.length; i++) {
    30             if (numbers[i] != i) {
    31                 if (numbers[i] == numbers[numbers[i]]) {
    32                     hashSet.add(numbers[i]);
    33                 } else {
    34                     int tmp = numbers[i];
    35                     numbers[i] = numbers[numbers[i]];
    36                     numbers[tmp] = tmp;
    37 
    38 //                    System.out.println(Arrays.toString(numbers));
    39 
    40                 }
    41             }
    42         }
    43 
    44         return hashSet.toArray(new Integer[hashSet.size()]);
    45     }
    46 
    47     @Test
    48     public void testDuplicate1() {
    49         int[] numbers = {2, 3, 1, 0, 2, 5, 3};
    50         System.out.println(Arrays.toString(numbers));
    51         System.out.println(Arrays.toString(findDuplicate(numbers)));
    52     }
    53 }
  • 相关阅读:
    firFox的HttpRequest插件的使用
    注解事务
    log4j配置说明
    对反射用法的初探
    关于set集合和Iterator迭代器的使用
    Eclipse的使用
    各种地图坐标系转换工具
    day67-CSS字体属性、文字属性、背景属性、css盒子模型
    day66-CSS伪类选择器和伪元素选择器
    day65-CSS选择器和样式优先级
  • 原文地址:https://www.cnblogs.com/wei1/p/9587833.html
Copyright © 2011-2022 走看看