数组(交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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值