leetcode链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/

题目

image.png

解法

分析:数组 nums 长度为 n ,且所有数字都在 0 - n-1 的范围内。因此可以采用使用另外一个长度为 n 的数组,然后对 nums 数组进行遍历,每遍历一个值 value,在新建数组下标为 value 的元素上进行判断,如果数组元素为0,则加一,如果为1,就将当前 value 返回。即 hash 表法。

  1. // 使用布尔数组
  2. class Solution {
  3. public int findRepeatNumber(int[] nums) {
  4. int len = nums.length;
  5. boolean[] tmp = new boolean[len];
  6. int res = 0;
  7. for(int num:nums){
  8. if (tmp[num]){
  9. res = num;
  10. break;
  11. } else {
  12. tmp[num] = true;
  13. }
  14. }
  15. return res;
  16. }
  17. }
  18. // 使用整形数组
  19. class Solution {
  20. public int findRepeatNumber(int[] nums) {
  21. int len = nums.length;
  22. int[] res = new int[len];
  23. for(int num:nums){
  24. res[num]++;
  25. if(res[num] > 1){
  26. return num;
  27. }
  28. }
  29. return -1;
  30. }
  31. }