数组 题目【数组中重复的数字】

  • 题目

数组题目1 数组中重复的数字

  • 在一个长度为n 的数组里面所有的数字都在0- n-1 的范围内,数组中某些数字是重复的,但不知道有几个数字是重复的,请找出任意一个重复的数子
int test_nums[] = {2,3,1,0,2,5,3};
对应输出 2 或者 3 
  • 解题思路
    假设数组排序,数组角标和对应的内容应该相同
  • 取角标的的数组存储的数字,并且把这个数字对应的值做对比,如果相同就是需要找到的结果
  • 如果不相同,做交换(相当于替换排序)
  • 注意保护(看代码)
//
//  main.cpp
//  c_test
//
//  Created by mingliang8 on 2020/9/4.
//  Copyright © 2020 mingliang8. All rights reserved.
//

#include 

//0 - n-1


bool testfun(int nums[],int len, int *val){
    if(nums == nullptr || len == 0){
        return true;
    }
  //  int arrlen = sizeof(nums)/sizeof(nums[0]);
    for(int i = 0;i< len;i++){
        if(nums[i] > i){
            return false;
        }
    }
    
    for(int i = 0;i< len;i++){
        if(nums[i] == nums[nums[i]]){ //找到了对应的数值,进行赋值,并返回
            *val = nums[i];
            return true;
        }else{
            int tmp = nums[i];
            nums[i] = nums[tmp];
            nums[tmp] = tmp;
        }
    }
    return true;
}

你可能感兴趣的:(数组 题目【数组中重复的数字】)