A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 麻木 中级黑马   /  2015-4-22 10:05  /  878 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /**
  2. *5.数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
  3. */

  4. #import <Foundation/Foundation.h>
  5. //新建一个removeDuplicate
  6. //形参 NSInteger* array 代入的整型数据 数组大小 size
  7. //返回值类型 NSInteger 新数组的大小

  8. NSInteger removeDuplicate(NSInteger* array,NSInteger size)
  9. {
  10.    
  11.     //1.取出数组的第一个元素i开始循环遍历
  12.     for(NSInteger i = 0;i < size;i++)
  13.     {
  14.         //1.2将元素i分别与它后面的循环遍历元素j对比
  15.         for(NSInteger j = i+1;j < size;j++)
  16.         {
  17.             //1.3如果i==j,说明有重复元素
  18.             if(array[i] == array[j])
  19.             {
  20.                 //1.4则将重复元素去掉后面所有元素往前挪一个位置
  21.                 for(NSInteger k =j;k+1 < size;k++)
  22.                 {
  23.                     array[k] = array[k+1];
  24.                 }
  25.                
  26.                 //1.5j自减1,为了再次检查重复元素的位置,以免后面挪过来的元素还是重复元素
  27.                 j--;
  28.                
  29.                 //1.6将原来数组的最后一位替换成数组结束符'\0'
  30.                 array[size-1]='\0';
  31.                
  32.                 //1.7数组大小减1
  33.                 size--;
  34.                
  35.             }
  36.         }
  37.         
  38.     }
  39.     return size;
  40. }

  41. int main(int argc, const char * argv[])
  42. {

  43.     @autoreleasepool {
  44.         
  45.         //2.自定义一个数组
  46.         NSInteger array[10] = {1,1,1,1,3,3,2,6,2,3};
  47.         
  48.         //3.调用函数removeDuplicate并返回一个值作为新的数组大小 newSize
  49.         NSInteger newSize = removeDuplicate(array,10);
  50.         
  51.         //4.重新打印去掉重复元素的数组
  52.         for(NSInteger i = 0;i < newSize;i++)
  53.         {
  54.             NSLog(@"%ld",array[i]);
  55.         }
  56.         
  57.     }
  58.     return 0;
  59. }
复制代码

1 个回复

倒序浏览
顶也~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马