美文网首页
iOS 给定一个数组,其中有一个数只出现一次,其他数都出现两次,

iOS 给定一个数组,其中有一个数只出现一次,其他数都出现两次,

作者: 赵哥窟 | 来源:发表于2020-06-24 16:38 被阅读0次

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

- (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]);
        }
    }
}
方法二

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

- (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则是要找的只出现一次的元素。

- (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);
        }
    }
    
}

相关文章

网友评论

      本文标题:iOS 给定一个数组,其中有一个数只出现一次,其他数都出现两次,

      本文链接:https://www.haomeiwen.com/subject/zearfktx.html