数组中重复的数字

数组中重复的数字

http://www.nowcoder.com/questionTerminal/623a5ac0ea5b4e5f95552655361ae0a8

import java.util.*;
public class Solution {
    // Parameters:
    //    numbers:     an array of integers
    //    length:      the length of array numbers
    //    duplication: (Output) the duplicated number in the array number,length of duplication array is 1,so using duplication[0] = ? in implementation;
    //                  Here duplication like pointor in C/C++, duplication[0] equal *duplication in C/C++
    //    这里要特别注意~返回任意重复的一个,赋值duplication[0]
    // Return value:       true if the input is valid, and there are some duplications in the array number
    //                     otherwise false
    public boolean duplicate(int numbers[],int length,int [] duplication) {
      //数组范围为0 - n-1,每遍历到一个数字index,将index索引:array[index]+length
      //如若再有索引index,那么array[index]必大于等于length
      for(int i=0;i<length;i++){
          int index = numbers[i]%length;//获取当前元素要映射到的索引index
          if(numbers[index]>=length){
              duplication[0]=index;
              return true;
          }
          numbers[index]+=length;
      }
      return false;
      //hashmap方法
     /* Map<Integer,Integer> map = new HashMap<Integer,Integer>();
      boolean flag = false;
      for(int i=0;i<length;i++){
          if(!map.containsKey(numbers[i]))map.put(numbers[i],1);
          else{
              flag = true;
              duplication[0]=numbers[i];
              break;
          }
      }
      return flag;*/
    }
}
全部评论

相关推荐

07-02 13:52
武汉大学 golang
骗你的不露头也秒
牛客87776816...:😃查看图片
点赞 评论 收藏
分享
白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
投了多少份简历才上岸
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务