美文网首页
数组中有重复元素吗?

数组中有重复元素吗?

作者: 我才是臭吉吉 | 来源:发表于2019-02-20 12:40 被阅读0次

    题目

    给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。

    • 示例1:
    输入: [1,2,3,1]
    输出: true
    
    • 示例2:
    输入: [1,2,3,4]
    输出: false
    

    解法1

    1. 对数组进行排序;
    2. 遍历排序后的数组,若相邻数据相同,则包含重复数据;否则不包含。
    BOOL checkDuplicateNumber1(NSArray<NSNumber *>* targetInfo) {
        if (targetInfo.count <= 1) {
            return NO;
        }
        // 1.排序
        NSArray *sortedInfo = [targetInfo sortedArrayUsingComparator:^NSComparisonResult(NSNumber* _Nonnull obj1, NSNumber* _Nonnull obj2) {
            // obj1比obj2,升序;用obj2比obj1,降序
            return [obj1 compare:obj2];
        }];
        
        // 2.查看相邻两数是否相同
        NSNumber *lastObj;
        for (NSNumber *currentObj in sortedInfo) {
            if (!lastObj) {
                lastObj = currentObj;
                continue;
            }
            if (currentObj.integerValue == lastObj.integerValue) {
                return YES;
            }
            lastObj = currentObj;
        }
        return NO;
    }
    

    解法2

    转换为NSSet集合对象,若元素数少于原数组,则包含重复数据。

    BOOL checkDuplicateNumber2(NSArray<NSNumber *>* targetInfo) {
        if (targetInfo.count <= 1) {
            return NO;
        }
        // 转化为NSSet对象,若元素比原数组少,则有相同数据
        NSSet *setInfo = [NSSet setWithArray:targetInfo];
        return setInfo.count != targetInfo.count;
    }
    

    相关文章

      网友评论

          本文标题:数组中有重复元素吗?

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