博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法-数组中重复的数字
阅读量:6646 次
发布时间:2019-06-25

本文共 1329 字,大约阅读时间需要 4 分钟。

题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。

//原文地址:http://www.cnblogs.com/xiaofeixiang-(NSInteger)duplicate:(NSMutableArray *)array{    for (NSInteger i=0;i<[array count];i++) {        while (i!=[array[i] integerValue]) {            if ([array[[array[i] integerValue]] isEqualTo:array[i]]) {                return [array[i] integerValue];            }            NSInteger  temp=[array[[array[i] integerValue]] integerValue];            array[[array[i] integerValue]]=array[i];            array[i]=[NSNumber numberWithInteger:temp];        }    }    return -1;}

测试代码:

NSMutableArray  *dataSource=[[NSMutableArray alloc]initWithObjects:@"2",@"3",@"1",@"4",@"1", nil];        NSInteger  index=[search duplicate:dataSource];        NSLog(@"重复的数字:%ld",index);        NSLog(@"技术交流群:%@",@"228407086");

还存在另外一种解法,比较简单,很绕,有兴趣的可以研究一下:

-(NSInteger)duplicate:(NSMutableArray *)array{    for (NSInteger i= 0 ; i<[array count]; i++) {        NSInteger index =[array[i] integerValue];        if (index >= [array count]) {ki,k   /.m m,l;''j im9l./            index -= [array count];        }        if ([array[index] integerValue] >= [array count]) {            return index;        }        array[index]=[NSNumber numberWithInteger:[array[index] integerValue] + [array count] ];    }    return - 1 ;}
你可能感兴趣的文章
syscomments 原始的 SQL 定义语句
查看>>
mvn 手动打包并放置到本地仓库下
查看>>
js计算24点
查看>>
软件开发基础常识
查看>>
安装Ubuntu时出现Intel VT-X没有开启
查看>>
XML中的url链接写法
查看>>
洛谷P1119 灾后重建
查看>>
ArcSDE:"Bad Login User" 错误解决方法
查看>>
android
查看>>
jasypt-spring-boot
查看>>
(诊断)为GitHub添加SSH key时出现“Could not open a connection to your authentication agent”错误的应对方案(转)...
查看>>
彼得原理
查看>>
30分钟让你了解MongoDB基本操作(转)
查看>>
用户交互程序
查看>>
Python学习【第17篇】:网络编程之粘包
查看>>
容器内部安装scp,拷贝到外部物理机
查看>>
微信js分享朋友圈(一)
查看>>
【原】centos6.5下cdh4.6 Oozie安装
查看>>
redis学习及实践3---Jedis、JedisPool、Jedis分布式实例介绍
查看>>
mobiscroll的例子
查看>>