美文网首页算法每日一刷
217. 存在重复元素(Swift)

217. 存在重复元素(Swift)

作者: entre_los_dos | 来源:发表于2019-06-05 18:39 被阅读0次

题目

给定一个整数数组,判断是否存在重复元素。

如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。

示例 1:

输入: [1,2,3,1]
输出: true

示例 2:

输入: [1,2,3,4]
输出: false

示例 3:

输入: [1,1,1,3,3,4,3,2,4,2]
输出: true

判断数组(只有整数)里面是否存在重复数值,存在返回true,不存在返回false

方法1-遍历过的数值放数组里面来判断

func containsDuplicate(_ nums: [Int]) -> Bool {
        
        //创建一个数组,用来放遍历过的数
        var newArr:[Int] = NSMutableArray() as! [Int]
        var isDuplicate = false
        
        for num in nums {
            //如果数组里面有,则代表有重复,返回结果
            if newArr.contains(num) {
                isDuplicate = true
                break
            }else {
                //没有的话,添加
                newArr.append(num)
            }
        }
        return isDuplicate
    }

时间超限。。

方法2-遍历过的数值放字典里面来判断

 func containsDuplicate(_ nums: [Int]) -> Bool {
        
        //创建一个字典,用来放遍历过的数
        var numDic = [Int:Int]()
        
        for num in nums {
            //如果数组里面有,则代表有重复,返回结果
            if numDic.keys.contains(num) {
                return true
            }else {
                //没有的话,添加
                numDic[num] = 0
            }
        }
        return false
    }

结果如下,很慢。。但是比数组快点儿,没超时


image.png

方法3-先排序再比较相邻值

func containsDuplicate(_ nums: [Int]) -> Bool {
        
        if nums.count < 2 {
            return false
        }
        //先排序
        let newNums = nums.sorted()
        //然后相邻值比对
        var num1 = newNums[0]
        for i in 1..<newNums.count {
            let currentNum = newNums[i]
            if currentNum == num1 {
                return true
            }
            num1 = currentNum
        }
        
        return false
    }

结果,比方法2要快很多~~


image.png

方法4-利用set去重

func containsDuplicate(_ nums: [Int]) -> Bool {
        
       return nums.count > Set(nums).count
    }

结果
236s,332s。效率也还可以~而且代码比较简洁

最后

  1. contains方法要慎用,数据量大的时候,查找也挺慢的
  2. 数组contains比字典contains查得要慢。
  3. set(数组),结果是数组去重后的,不过无序

相关文章

网友评论

    本文标题:217. 存在重复元素(Swift)

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