zoukankan      html  css  js  c++  java
  • 找出数组中重复的数字--剑指offer

     本道题是较为简单的数组问题,只需要找到重复的数字,并不是找到所有的数字。一开始想着遍历完所有的数组元素,但会出现超出时间设置。

     1 int findRepeatNumber(int* nums, int numsSize){
     2     int i,j,k=0;
     3     int s[numsSize];
     4 //    qsort(nums,numsSize,sizeof(nums[0]),cmp);
     5     for(i=0;i<numsSize;i++)
     6     {
     7         for(j=i+1;j<numsSize;j++)
     8         {
     9             if(nums[i]==nums[j])
    10             {
    11               s[k]=nums[i];
    12               k++;
    13             }
    14         }
    15     }
    16     /*
    17         j=i+1;
    18         if(nums[i]==nums[j])
    19         {
    20             s=nums[i];
    21             break;
    22         }
    23     
    24     }
    25     */
    26     int n=rand()%k;
    27     return s[n];
    28 }

     后来决定对数组进行排序,由于题中要求的是输出任意一个重复元素。因此,只要找到排序后相邻的相同的元素即可。代码如下:

     1 //#define MAX 100000
     2 int cmp(const void *a,const void *b)
     3 {
     4     return *(int *)a-*(int *)b;
     5 }
     6 int findRepeatNumber(int* nums, int numsSize){
     7     int i,j,k=0;
     8     int s;
     9     qsort(nums,numsSize,sizeof(nums[0]),cmp);
    10     for(i=0;i<numsSize-1;i++)
    11     {
    12         j=i+1;
    13         if(nums[i]==nums[j])
    14         {
    15             s=nums[i];
    16             break;
    17         }
    18     
    19     }
    20  //   int n=rand()%k;
    21     return s;
    22 }
  • 相关阅读:
    【排序】紧急集合
    Tallest Cow(线段树较易)
    递归实现排列型枚举
    文件输入输出文件
    【分治】逃亡
    折半查找法(二分)
    递归/非递归实现组合型枚举(全排列问题)
    9.25DAY1T2
    9.25DAY1T1
    POI2004[MOS] 贪心+DP
  • 原文地址:https://www.cnblogs.com/sbb-first-blog/p/13264987.html
Copyright © 2011-2022 走看看