zoukankan      html  css  js  c++  java
  • 数组中重复的数字

    思路:

    以数组{2,3,1,0,2,5,3}为例来分析找重复数字的步骤。

    第0个数字是2,与下标不相等,把它和下标为2的数字交换,得到:{1,3,2,0,2,5,3};

    第0个数字是1,仍与下标不相等,把它和下标为1的数字交换,得到:{3,1,2,0,2,5,3};

    第0个数字是3,仍与下标不相等,把它和下标为3的数字交换,得到:{0,1,2,3,2,5,3};

    第0个数字是0,与下标相等,继续下一位;

    第1位和1相等,继续下一位;

    第2位和2相等,继续下一位;

    第3位和3相等,继续;

    第4位是2,与下标不相等,要将它和第二位数字交换,但是此时的第二位数字也是2,出现重复的数字了,返回函数,找到重复的数字了。

     1 class Solution {
     2 public:
     3     // Parameters:
     4     //        numbers:     an array of integers
     5     //        length:      the length of array numbers
     6     //        duplication: (Output) the duplicated number in the array number
     7     // Return value:       true if the input is valid, and there are some duplications in the array number
     8     //                     otherwise false
     9     bool duplicate(int numbers[], int length, int* duplication) {
    10         if(numbers==nullptr || length<=0) return false;
    11         for(int i=0;i<length;i++){
    12             if(numbers[i]>length-1) return false;
    13         }
    14         for(int i=0;i<length;i++){
    15             while(numbers[i]!=i){
    16                 if(numbers[i]==numbers[numbers[i]]){
    17                     *duplication = numbers[i];
    18                     return true;
    19                 }
    20                 //交换mubers[i] 和 numbers[numbers[i]]
    21                 int temp=numbers[i];
    22                 numbers[i]=numbers[temp];
    23                 numbers[temp] = temp;
    24             }
    25         }
    26         return false;
    27     }
    28 };
  • 相关阅读:
    第二次结对作业(陆桂莺+崔亚明)
    第一次结对作业
    第二次作业:代码互改
    markdown详细
    第一次个人编程作业:我的分数我做主
    手动下载transformers的模型
    torch设置GPU
    Python import的搜索路径和不可以import的解决方法 (On Linux)
    Python中windows路径的3种写法
    一台计算机安装多个版本的torch和CUDA的教程
  • 原文地址:https://www.cnblogs.com/pacino12134/p/11238006.html
Copyright © 2011-2022 走看看