zoukankan      html  css  js  c++  java
  • 剑指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 };
  • 相关阅读:
    ruby学习系列(1)
    学习调用WCF服务的各种方法
    Web Service简介
    ajax编程
    ReportView控件的使用
    .NET中26个优化性能方法
    图书管理前端页面
    图书管理后端接口
    Vue组件
    axios登录前端
  • 原文地址:https://www.cnblogs.com/iwangzhengchao/p/9838715.html
Copyright © 2011-2022 走看看