配列(交差OR並)


仕事や面接では、いくつかの配列に対して交差や並列を求める場合がよくあります.このログでは、最も速く交差や並列を求め、重複データを削除する方法を説明しています.効率に影響を及ぼすアルゴリズムについては、ここでは説明しない.
配列求教と求並はいずれもSetという集合を用いる.このデータが存在するかどうかをより速くクエリーできます.
//
// ArrayIntersectUnion.swift
// ArrayIntersectUnion
//
// Created by yangjun on 15/11/25.
// Copyright © 2015    . All rights reserved.
//

import Cocoa

class ArrayIntersectUnion {


    // MARK:   
    ///      ,       
    ///
    /// - parameter array1 :   1
    /// - parameter array2 :   2
    ///
    /// - returns: array
    func intersect(array1: Array<String>, _ array2: Array<String>) -> Array<String> {
        var list = Array<String>()
        var set = Set<String>()
        //     
        for item in array1 {
            set.insert(item)
        }
        //         
        for item in array2 {
            if set.contains(item) {
                list.append(item)
            }
        }
        return list
    }

    // MARK:   
    ///      
    ///
    /// - parameter array1 :   1
    /// - parameter array2 :   2
    ///
    /// - returns: array
    func union(array1: Array<String>, _ array2: Array<String>) -> Array<String> {
        var list = Array<String>()
        var set = Set<String>()
        //     1
        for item in array1 {
            if !set.contains(item) { //      ,      
                set.insert(item)
                list.append(item)
            }
        }
        //     2
        for item in array2 {
            if !set.contains(item) {
                set.insert(item)
                list.append(item)
            }
        }
        return list
    }

}

 

その他


ソースコード


Algorithms

参考資料


アルゴリズム導論

ドキュメント変更レコード


時間
説明
2015-11-25
アルゴリズムプロジェクト完了、博文完了

著作権所有


CSDN:http://blog.csdn.net/y550918116j
GitHub:https://github.com/937447974/Blog