Swift 存在重复 - LeetCode

存在重复

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

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

这个算是比较容易的。(判断的方法依据就是:我不用百度会做😂)

-1)使用Set

代码如下:

class Solution {
    func containsDuplicate(_ nums: [Int]) -> Bool {
        let set = Set(nums)
        return set.count != nums.count
    }
}

执行时间:52ms

-2) 排序判断前后有没有相等的元素(时间多少取决于排序算法,我这直接用的Swift提供的sorted

代码如下:

class Solution {
    func containsDuplicate(_ nums: [Int]) -> Bool {       
         if nums.isEmpty || nums.count == 1 {
             return false
         }
        
         let nums = nums.sorted()
        
         for i in 0..<nums.count - 1 {
             if nums[i] == nums[i + 1] {
                 return true
             }
         }
         return false
    }
}

执行用时:96 ms

-3)使用哈希表(Dictionary)

代码如下:

class Solution {
    func containsDuplicate(_ nums: [Int]) -> Bool {
         for i in 0..<nums.count {
            if let _ = dic[nums[i]] {
                return true
            }
            dic[nums[i]] = i
        }
        return false
    }
}

执行用时:68 ms

开始用Swift学习算法中,在LeetCode中开始做初级算法这一章节,将做的题目在此做个笔记吧。
    原文作者:韦弦Zhy
    原文地址: https://www.jianshu.com/p/b0b165cd8db6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞