美文网首页
swift实现两个数组的交集

swift实现两个数组的交集

作者: 清风自来_a7c1 | 来源:发表于2018-08-30 15:42 被阅读0次

swift实现两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。
说明:
输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
我们可以不考虑输出结果的顺序。
进阶:
如果给定的数组已经排好序呢?你将如何优化你的算法?
如果nums1 的大小比nums2 小很多,哪种方法更优?
如果nums2 的元素存储在磁盘上,磁盘内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?
方案一

    func intersect(_ nums1: [Int], _ nums2: [Int]) -> [Int] {
        var record = [Int]()
        var intersects = [Int]()
        for i in 0..<nums1.count {
            let temp = nums1[i]
            for j in 0..<nums2.count {
                if temp == nums2[j] {
                    var exist = false

                    if record.contains(j) {
                        exist = true
                    }

                    if !exist {
                        record.append(j)
                        intersects.append(temp)
                        break
                    }
                }
            }
        }
        return intersects
    }
}

方案二

class Solution {
    func intersect(_ nums1: [Int], _ nums2: [Int]) -> [Int] {
        
        var num1 = nums1.sorted(by: <)
        var num2 = nums2.sorted(by: <)
        
        
        var i = 0
        var j = 0
        var num3 = Array<Int>()
        
        while i < num1.count && j < num2.count {
            if num1[i] < num2[j] {
                i = i + 1
            } else if num1[i] > num2[j] {
                j = j + 1
            } else {
                num3.append(num1[i])
                i = i + 1
                j = j + 1
            }
        }
        
        return num3
    }
}

相关文章

网友评论

      本文标题:swift实现两个数组的交集

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