ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

LeetCode题解(0710):黑名单中的随机数(Python)

2020-11-23 21:05:43  阅读:230  来源: 互联网

标签:set last Python 题解 self blacklist black 0710


题目:原题链接(困难)

标签:哈希表、随机、排序、二分查找

解法时间复杂度空间复杂度执行用时
Ans 1 (Python) O ( B l o g B ) O(BlogB) O(BlogB) O ( B ) O(B) O(B)364ms (83.01%)
Ans 2 (Python)
Ans 3 (Python)

解法一(黑名单映射):

class Solution:

    def __init__(self, N: int, blacklist: List[int]):
        self.black = {}

        black_set = set(blacklist)
        last = N - 1

        # 保证黑名单连续数字不相同(如果黑名单超过白名单长度则为-1,-2,仍然会在白名单中向前遍历)
        blacklist.sort()
        for black in blacklist:
            while last in black_set:
                last -= 1
            self.black[black] = last
            last -= 1

        self.n = N - len(black_set)

        print(self.n, self.black)

    def pick(self) -> int:
        r = random.randint(0, self.n - 1)
        return self.black[r] if r in self.black else r

标签:set,last,Python,题解,self,blacklist,black,0710
来源: https://blog.csdn.net/Changxing_J/article/details/109837503

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有