Randomized Algorithms¶
Table of Contents¶
- 398. Random Pick Index (Medium)
- 382. Linked List Random Node (Medium)
- 384. Shuffle an Array (Medium)
- 470. Implement Rand10() Using Rand7() (Medium)
- 528. Random Pick with Weight (Medium)
- 710. Random Pick with Blacklist (Hard)
- 478. Generate Random Point in a Circle (Medium)
- 497. Random Point in Non-overlapping Rectangles (Medium)
- 519. Random Flip Matrix (Medium)
- 380. Insert Delete GetRandom O(1) (Medium)
- 381. Insert Delete GetRandom O(1) - Duplicates allowed (Hard)
- 1515. Best Position for a Service Centre (Hard)
- 1968. Array With Elements Not Equal to Average of Neighbors (Medium)
398. Random Pick Index¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: hash table, math, reservoir sampling, randomized
382. Linked List Random Node¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: linked list, math, reservoir sampling, randomized
384. Shuffle an Array¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: array, math, design, randomized
470. Implement Rand10() Using Rand7()¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: math, rejection sampling, randomized, probability and statistics
528. Random Pick with Weight¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: array, math, binary search, prefix sum, randomized
710. Random Pick with Blacklist¶
-
LeetCode | LeetCode CH (Hard)
-
Tags: array, hash table, math, binary search, sorting, randomized
478. Generate Random Point in a Circle¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: math, geometry, rejection sampling, randomized
497. Random Point in Non-overlapping Rectangles¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: array, math, binary search, reservoir sampling, prefix sum, ordered set, randomized
519. Random Flip Matrix¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: hash table, math, reservoir sampling, randomized
380. Insert Delete GetRandom O(1)¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: array, hash table, math, design, randomized
import random
class RandomizedSet:
def __init__(self):
self.dict = {}
self.list = []
def insert(self, val: int) -> bool:
if val in self.dict:
return False
self.dict[val] = len(self.list)
self.list.append(val)
return True
def remove(self, val: int) -> bool:
if val not in self.dict:
return False
last_element = self.list[-1]
idx = self.dict[val]
self.list[idx] = last_element
self.dict[last_element] = idx
self.list.pop()
del self.dict[val]
return True
def getRandom(self) -> int:
return random.choice(self.list)
obj = RandomizedSet()
print(obj.insert(1)) # True
print(obj.remove(2)) # False
print(obj.insert(2)) # True
print(obj.getRandom()) # 1 or 2
print(obj.remove(1)) # True
381. Insert Delete GetRandom O(1) - Duplicates allowed¶
-
LeetCode | LeetCode CH (Hard)
-
Tags: array, hash table, math, design, randomized
1515. Best Position for a Service Centre¶
-
LeetCode | LeetCode CH (Hard)
-
Tags: array, math, geometry, randomized
1968. Array With Elements Not Equal to Average of Neighbors¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: array, greedy, sorting