insert-delete-getrandom-o1-duplicates-allowed

https://leetcode.com/problems/insert-delete-getrandom-o1-duplicates-allowed/

public class RandomizedCollection {
    ArrayList<Integer> nums;
    HashMap<Integer, Set<Integer>> locs;
    java.util.Random rand;

    /** Initialize your data structure here. */
    public RandomizedCollection() {
        rand = new java.util.Random();
        nums = new ArrayList<Integer>();
        locs = new HashMap<Integer, Set<Integer>>();
    }

    /** Inserts a value to the collection. Returns true if the collection did not already contain the specified element. */
    public boolean insert(int val) {
        boolean contained = locs.containsKey(val);
        if (!contained) {
            locs.put(val, new LinkedHashSet<Integer>());
        }
        locs.get(val).add(nums.size());
        nums.add(val);
        return !contained;
    }

    /** Removes a value from the collection. Returns true if the collection contained the specified element. */
    public boolean remove(int val) {
        boolean contained = locs.containsKey(val);
        if (!contained) {
            return false;
        }
        int index = locs.get(val).iterator().next();
        locs.get(val).remove(index);
        if (index < nums.size()-1) {
            int change = nums.get(nums.size()-1);
            nums.set(index, change);
            locs.get(change).remove(nums.size()-1);
            locs.get(change).add(index);
        }
        nums.remove(nums.size()-1);
        if (locs.get(val).isEmpty()) {
            locs.remove(val);
        }
        return true;

    }

    /** Get a random element from the collection. */
    public int getRandom() {
        return nums.get(rand.nextInt(nums.size()));
    }
}

/**
 * Your RandomizedCollection object will be instantiated and called as such:
 * RandomizedCollection obj = new RandomizedCollection();
 * boolean param_1 = obj.insert(val);
 * boolean param_2 = obj.remove(val);
 * int param_3 = obj.getRandom();
 */
时间: 2024-11-06 20:56:34

insert-delete-getrandom-o1-duplicates-allowed的相关文章

381.&#160;Insert Delete GetRandom O(1) - Duplicates allowed

381. Insert Delete GetRandom O(1) - Duplicates allowed https://www.youtube.com/watch?v=mRTgft9sBhA 这个自己写写,花花讲的思路还行 https://zxi.mytechroad.com/blog/hashtable/leetcode-381-insert-delete-getrandom-o1-duplicates-allowed/ 没通过 class RandomizedCollection {

[LeetCode] Insert Delete GetRandom O(1) - Duplicates allowed 常数时间内插入删除和获得随机数 - 允许重复

Design a data structure that supports all following operations in average O(1) time. Note: Duplicate elements are allowed. insert(val): Inserts an item val to the collection. remove(val): Removes an item val from the collection if present. getRandom:

381. Insert Delete GetRandom O(1) - Duplicates allowed - Hard

Design a data structure that supports all following operations in average O(1) time. Note: Duplicate elements are allowed. insert(val): Inserts an item val to the collection. remove(val): Removes an item val from the collection if present. getRandom:

LeetCode Insert Delete GetRandom O(1)

原题链接在这里:https://leetcode.com/problems/insert-delete-getrandom-o1/?tab=Description 题目: Design a data structure that supports all following operations in average O(1) time. insert(val): Inserts an item val to the set if not already present. remove(val)

LeetCode 380. Insert Delete GetRandom O(1)

380. Insert Delete GetRandom O(1) Add to List Description Submission Solutions Total Accepted: 21771 Total Submissions: 56175 Difficulty: Medium Contributors: Admin Design a data structure that supports all following operations in average O(1) time.

【Leetcode】Insert Delete GetRandom O(1) - Duplicates allowed

题目链接:https://leetcode.com/problems/insert-delete-getrandom-o1-duplicates-allowed/ 题目: Design a data structure that supports all following operations in average O(1) time. Note: Duplicate elements are allowed. insert(val): Inserts an item val to the c

LeetCode 381. Insert Delete GetRandom O(1) - Duplicates allowed (插入删除和获得随机数 常数时间 允许重复项)

Design a data structure that supports all following operations in average O(1) time. Note: Duplicate elements are allowed. insert(val): Inserts an item val to the collection. remove(val): Removes an item val from the collection if present. getRandom:

Insert Delete GetRandom O(1) - Duplicates allowed

Design a data structure that supports all following operations in average O(1) time. Note: Duplicate elements are allowed. insert(val): Inserts an item val to the collection. remove(val): Removes an item val from the collection if present. getRandom:

Leetcode: Insert Delete GetRandom O(1) - Duplicates allowed

Design a data structure that supports all following operations in average O(1) time. Note: Duplicate elements are allowed. insert(val): Inserts an item val to the collection. remove(val): Removes an item val from the collection if present. getRandom:

380. Insert Delete GetRandom O(1)

https://leetcode.com/problems/insert-delete-getrandom-o1/#/description Design a data structure that supports all following operations in average O(1) time. insert(val): Inserts an item val to the set if not already present. remove(val): Removes an it