美文网首页
《数据结构与算法》总结(三)集合

《数据结构与算法》总结(三)集合

作者: 原来是泽镜啊 | 来源:发表于2020-06-11 20:58 被阅读0次
一 目录
  • 集合介绍
  • 接口设计
二 集合(Set)

集合的特点

  • 不存放重复的元素
  • 常用于去重
    • 存放新增 IP,统计新增 IP 量
    • 存放词汇,统计词汇量
    • ......
三 接口设计
@interface Set : NSObject

- (int)size;

- (BOOL)isEmpty;

- (void)clear;

- (BOOL)contains:(id)element;

- (void)add:(id)element;

- (void)remove:(id)element;

- (void)traversal;

@end

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:413038000,不管你是大牛还是小白都欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

以下资料在群文件可自行下载!

3.1 使用链表实现
  • 使用链表实现
@interface ListSet()
/** list*/
@property(nonatomic,strong)LinkedList *list;
@end

@implementation ListSet

- (instancetype)init {
    self = [super init];
    if (self) {
        self.list = [[LinkedList alloc] init];
    }
    return self;
}

#pragma mark - override

- (int)size {
    return (int)self.list.size;
}

- (BOOL)isEmpty {
    return self.list.isEmpty;
}

- (void)clear {
    [self.list clear];
}

- (BOOL)contains:(id)element {
    return [self.list contains:element];
}

- (void)add:(id)element {
    NSUInteger index = [self.list indexOf:element];

    if (index == NSNotFound) {  // 不存在就添加
        [self.list add:element];
    } else {
        [self.list set:index element:element];
    }
}

- (void)remove:(id)element {
    NSInteger index = [self.list indexOf:element];

    if (index != NSNotFound) {  // 存在
        [self.list remove:index];
    }
}

- (void)traversal {
    for (int i = 0; i < self.list.size; i++) {
        NSLog(@"%@",[self.list get:i]);
    }
}

@end

  • 测试代码如下
- (void)listSetTest {
    ListSet *set = [[ListSet alloc] init];
    [set add:@10];
    [set add:@11];
    [set add:@11];
    [set add:@12];
    [set add:@10];

    [set traversal];
}

  • 运行结果如下
2020-02-29 16:48:50.085402+0800 13_Set[83620:4504418] 10
2020-02-29 16:48:50.085568+0800 13_Set[83620:4504418] 11
2020-02-29 16:48:50.085673+0800 13_Set[83620:4504418] 12

3.2 二叉树实现
  • TreeSet
@interface TreeSet()
/** tree */
@property(nonatomic,strong)RBTree *tree;
@end

@implementation TreeSet

- (instancetype)init {
    self = [super init];
    if (self) {
        self.tree = [[RBTree alloc] init];
    }
    return self;
}

#pragma mark - override

- (int)size {
    return self.tree.size;
}

- (BOOL)isEmpty {
    return self.tree.isEmpty;
}

- (void)clear {
    [self.tree clear];
}

- (BOOL)contains:(id)element {
    return [self.tree contains:element];
}

- (void)add:(id)element {
    [self.tree add:element];
}

- (void)remove:(id)element {
    [self.tree remove:element];
}

- (void)traversal {
    [self.tree preordr];
}

@end

  • 测试代码
- (void)treeSetTest {
    TreeSet *treeSet = [[TreeSet alloc] init];
    [treeSet add:@12];
    [treeSet add:@10];
    [treeSet add:@7];
    [treeSet add:@11];
    [treeSet add:@10];
    [treeSet add:@11];
//    [treeSet add:@9];

    [treeSet traversal];
}

  • 运行结果如下
2020-02-29 16:50:53.745750+0800 13_Set[83665:4507822] 12
2020-02-29 16:50:53.745908+0800 13_Set[83665:4507822] 10
2020-02-29 16:50:53.746010+0800 13_Set[83665:4507822] 7
2020-02-29 16:50:53.746182+0800 13_Set[83665:4507822] 11


项目链接地址 - 13_Set


作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:413038000,不管你是大牛还是小白都欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

推荐阅读

iOS开发——最新 BAT面试题合集(持续更新中)

作者:路飞_Luck
链接:https://www.jianshu.com/p/26fbca3e5f6b
来源:简书

相关文章

  • 数据结构与算法

    参考链接:算法 数据结构与算法 iOS数据结构 和 算法 上 算法 1、数据结构: 集合结构: 线性结构: 树形结...

  • 《数据结构与算法》总结(三)集合

    一 目录 集合介绍 接口设计 二 集合(Set) 集合的特点 不存放重复的元素 常用于去重存放新增 IP,统计新增...

  • 数据结构与算法

    数据结构与算法(详细资料暂没查询到) 目的 数据结构:是将有特定关系的数据元素的集合数据结构与算法是为了做程序设计...

  • 工作消失而面试却长存的算法与数据结构

    工作消失而面试却长存的算法与数据结构: 优秀的算法和数据结构被封装到了Java的集合框架之中 数据结构考点: 数组...

  • 数据结构之栈

    (注释:整篇数据结构与算法文集,部分总结于王争的《数据结构与算法之美》和李明杰的《恋上数据结构与算法》,加上自己的...

  • 数据结构之队列

    (注释:整篇数据结构与算法文集,部分总结于王争的《数据结构与算法之美》和李明杰的《恋上数据结构与算法》,加上自己的...

  • 数据结构之二分查找的概念

    (注释:整篇数据结构与算法文集,部分总结于王争的《数据结构与算法之美》和李明杰的《恋上数据结构与算法》,加上自己的...

  • 数据结构之二叉树

    (注释:整篇数据结构与算法文集,部分总结于王争的《数据结构与算法之美》和李明杰的《恋上数据结构与算法》,加上自己的...

  • 数据结构之二叉搜索树

    (注释:整篇数据结构与算法文集,部分总结于王争的《数据结构与算法之美》和李明杰的《恋上数据结构与算法》,加上自己的...

  • 二叉树的遍历(前序中序后序层序)

    (注释:整篇数据结构与算法文集,部分总结于王争的《数据结构与算法之美》和李明杰的《恋上数据结构与算法》,加上自己的...

网友评论

      本文标题:《数据结构与算法》总结(三)集合

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