前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS 给定一个数组,其中有一个数只出现一次,其他数都出现两次,找到只出现一次的那个数。

iOS 给定一个数组,其中有一个数只出现一次,其他数都出现两次,找到只出现一次的那个数。

作者头像
赵哥窟
发布2020-06-29 10:34:35
3560
发布2020-06-29 10:34:35
举报
文章被收录于专栏:日常技术分享

最笨效率最低的办法,两个for循环,找出出现相同数字的次数

代码语言:javascript
复制
- (void)test1{
    NSArray *array = @[@"1",@"1",@"2",@"2",@"3",@"3",@"4",@"4",@"5",@"6"];
   
    for (int i = 0; i < array.count; i++) {
        NSString *itemi = array[i];
         int count = 0;
        for (int j = 0; j<array.count; j++) {
             NSString *itemj = array[j];
            if ([itemi isEqualToString:itemj]) {
                count++;
            }
        }
        if (count == 1) {
            NSLog(@"只出现一次数为:%@", array[i]);
        }
    }
}
方法二

利用数组比较元素的方法,如果数组中没有出现该元素则添加,如果该元素出现了则删除该元素

代码语言:javascript
复制
- (void)test2{
    NSArray *array = @[@"1",@"1",@"2",@"2",@"3",@"3",@"4",@"4",@"5",@"6"];
    
    NSMutableArray *mArray = [[NSMutableArray alloc] init];
   
    for (int i = 0; i < array.count; i++) {
         NSString *item = array[i];
        if (![mArray containsObject:item]) {
            [mArray addObject:item];
        }else{
            [mArray removeObject:item];
        }
    }
    NSLog(@"只出现一次数为:%@", mArray);
}
方法三

直接遍历整个数组,建成hash的数组。最后再遍历一次hash,取出对应key的数组有几个元素,如果有一个元素的key则是要找的只出现一次的元素。

代码语言:javascript
复制
- (void)test3{
    NSArray *array = @[@"1",@"1",@"2",@"2",@"3",@"3",@"4",@"4",@"5",@"6"];
    
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    for (int i = 0; i < array.count; i++) {
        NSString *item = array[i];
       // 如果字典中不存在该key
        if (![[dict allKeys] containsObject:item]) {
            NSMutableArray *mArray = [[NSMutableArray alloc] init];
            [mArray addObject:item];
            [dict setObject:mArray forKey:item];
        }
        else{
            // 如果字典中存在key,则取出数组增加元素
            NSMutableArray *mArray = [dict objectForKey:item];
            [mArray addObject:item];
        }
        
    }
    
    NSArray *keyArr = dict.allKeys;
// 遍历字典,取出的数组如果只有一个元素的则是我们要找的
    for (int i = 0; i < keyArr.count; i++) {
        NSString *key = keyArr[i];
        NSMutableArray *arr = [dict objectForKey:key];
        if (arr.count == 1) {
            NSLog(@"只出现一个数为:%@", key);
        }
    }
    
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方法二
  • 方法三
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档