03-数组中重复数字

    技术2022-07-10  81

    数组中重复数字

    ​ 题目描述

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

    ​ 示例

    输入: [2, 3, 1, 0, 2, 5, 3] 输出:23

    1:排序

    先将数组排序遍历数组,找到出现两次以上的元素 class Solution { public int findRepeatNumber(int[] nums) { Arrays.sort(nums); int len = nums.length; for(int i = 1; i < len; i++) { if(nums[i]==nums[i-1]) return nums[i]; } return 0; } }

    时间复杂度:O(nlog n),空间复杂度:O(1)

    2:哈希表

    遍历数组,在遍历的过程中,出现map.containsKey(nums[i])就返回nums[i] class Solution { public int findRepeatNumber(int[] nums) { int len = nums.length; Map<Integer, Integer> map = new HashMap<>(); for(int i = 0; i < len; i++) { if(!map.containsKey(nums[i])) { map.put(nums[i], 1); } else { return nums[i]; } } return -1; } }

    时间复杂度:O(n),空间复杂度:O(n)

    Processed: 0.044, SQL: 9