• 剑指offer---数组中重复的数字


    题目:数组中重复的数字

    要求:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字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         
    11     }
    12 };

    解题代码:

     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)
    11             return false;
    12         for(int i=0; i<length; i++){
    13             if(numbers[i] < 0 || numbers[i] > length-1)
    14                 return false;
    15         }
    16         
    17         int i = 0;
    18         while(i < length){
    19             if(numbers[i] == i)
    20                 i++;
    21             else{
    22                 int idx = numbers[i];
    23                 if(numbers[i] == numbers[idx]){
    24                     *duplication = numbers[i];
    25                     return true;
    26                 }
    27                 else{
    28                     int temp = numbers[i];
    29                     numbers[i] = numbers[idx];
    30                     numbers[idx] = temp;
    31                     i = 0;
    32                 }
    33                 
    34             }
    35         }
    36         return false;
    37     }
    38 };
  • 相关阅读:
    牛式个数
    查找矩阵中某一元素
    破碎的项链
    找鞍点
    方阵形对角矩阵
    间接寻址
    Oracle安装配置的一些备忘点
    通过二维码在Windows、macOS、Linux桌面和移动设备之间传输文件
    httpd连接php-fpm
    nginx反代+lamp+MySQL主从同步的简单实现
  • 原文地址:https://www.cnblogs.com/iwangzhengchao/p/9838715.html
Copyright © 2020-2023  润新知