美文网首页
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