美文网首页
2023-11-29(无限集中的小数)

2023-11-29(无限集中的小数)

作者: lotawei | 来源:发表于2023-11-29 14:16 被阅读0次

11/30
//import Foundation
//
//现有一个包含所有正整数的集合 [1, 2, 3, 4, 5, ...] 。
//
//实现 SmallestInfiniteSet 类:
//
//SmallestInfiniteSet() 初始化 SmallestInfiniteSet 对象以包含 所有 正整数。
//int popSmallest() 移除 并返回该无限集中的最小整数。
//void addBack(int num) 如果正整数 num 不 存在于无限集中,则将一个 num 添加 到该无限集中。
//
//
//示例:
//
//输入
//["SmallestInfiniteSet", "addBack", "popSmallest", "popSmallest", "popSmallest", "addBack", "popSmallest", "popSmallest", "popSmallest"]
//[[], [2], [], [], [], [1], [], [], []]
//输出
//[null, null, 1, 2, 3, null, 1, 4, 5]
//
//解释
//SmallestInfiniteSet smallestInfiniteSet = new SmallestInfiniteSet();
//smallestInfiniteSet.addBack(2); // 2 已经在集合中,所以不做任何变更。
//smallestInfiniteSet.popSmallest(); // 返回 1 ,因为 1 是最小的整数,并将其从集合中移除。
//smallestInfiniteSet.popSmallest(); // 返回 2 ,并将其从集合中移除。
//smallestInfiniteSet.popSmallest(); // 返回 3 ,并将其从集合中移除。
//smallestInfiniteSet.addBack(1); // 将 1 添加到该集合中。
//smallestInfiniteSet.popSmallest(); // 返回 1 ,因为 1 在上一步中被添加到集合中,
// // 且 1 是最小的整数,并将其从集合中移除。
//smallestInfiniteSet.popSmallest(); // 返回 4 ,并将其从集合中移除。
//smallestInfiniteSet.popSmallest(); // 返回 5 ,并将其从集合中移除。
//
//
//提示:
//
//1 <= num <= 1000
//最多调用 popSmallest 和 addBack 方法 共计 1000 次
//思路: 固定了正整数数组
//开始想复杂了 set集合中去对原有数组进行增删 计数 发现不容易控制迭代器导致代码不太清晰 后来一想 hash就可以解决 根本无需进行增删操作 只需标记 num是 在与否
//可以使用hash的方式记录
public class SmallestInfiniteSet {
var hashRecord = Int:Int
init() {
for i in 1...1000 {
hashRecord[i] = 1
}
}

func popSmallest() -> Int {
    var  res = 1
    for i in 1...1000 {
        if hashRecord[i] == 1{
            hashRecord[i] = 0
            return  i
        }
    }
    return 0;
}

func addBack(_ num: Int) {
    if (hashRecord[num] == 0) {
        hashRecord[num] = 1;
    }
}

}
let smallestInfiniteSet = SmallestInfiniteSet();
smallestInfiniteSet.addBack(2); // 2 已经在集合中,所以不做任何变更。
smallestInfiniteSet.popSmallest(); // 返回 1 ,因为 1 是最小的整数,并将其从集合中移除。
smallestInfiniteSet.popSmallest(); // 返回 2 ,并将其从集合中移除。
smallestInfiniteSet.popSmallest(); // 返回 3 ,并将其从集合中移除。
smallestInfiniteSet.addBack(1); // 将 1 添加到该集合中。
smallestInfiniteSet.popSmallest(); // 返回 1 ,因为 1 在上一步中被添加到集合中,
// 且 1 是最小的整数,并将其从集合中移除。
smallestInfiniteSet.popSmallest(); // 返回 4 ,并将其从集合中移除。
smallestInfiniteSet.popSmallest();

相关文章

  • 数学日记

    在第一单元学习里,我学到了无限小数。 在无限小数中,还分无限循环小数和无限不循环小数,无限循环小数还分纯循环小数(...

  • JS中的正则表达式

    验证非0开头的无限位整数和小数。整数支持无限位,小数点前支持无限位,小数点后最多保留两位 单独拆分: 整数:/^(...

  • 鱼铃手记|由圆周率引发的哲学课

    女儿数学课学到了循环小数 预习时我和她讲小数的分类 有限小数、无限循环小数、无限不循环小数。 -圆周率你知道吗宝贝...

  • 001 有理数、无理数、实数

    有理数:有限小数、无限循环小数 无理数:无限不循环小数 实数:有理数和无理数统称

  • 无限循环流

    我们学过:有限小数、无限不循环小数、无限循环小数。其中,循环的意思是最直观的表现就是:相同的数字一直连着出现。 其...

  • 三升四数学(7)

    七,分数化小数(续) 分子是1的分数叫单位分数 分数化小数的方法:用分子除以分母 小数分为:有限小数和无限循环小数...

  • 数学分析理论基础1:实数

    实数 实数的正规表示 将有限小数与整数表示为无限小数: 注:任何实数都可用一个唯一确定的无限小数表示 实数大小关系...

  • 质数到底有多少个,欧几里得是如何证明质数是无限的

    数字的世界很神奇,实数,虚数,有理数,整数,小数,分数,循环小数,无限不循环小数,无理数,质数,合数,基数,偶数,...

  • 小数的神奇之处

    我们学完了小数这个单元,我们发现了很多小数与自然数不同的地方。 小数后面可以无限加上 0 ,为什么呢?我们先来说说...

  • 有理数的运算法则 - 草稿

    有理数是什么,就是除了无限不循环小数的所有数,也就是说,无限不循环小数就是无理数。 有理数的加法 ...

网友评论

      本文标题:2023-11-29(无限集中的小数)

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