Leetcode 398. 随机数索引 解题思路及C++实现
生活随笔
收集整理的這篇文章主要介紹了
Leetcode 398. 随机数索引 解题思路及C++实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
解題思路:
題目對空間復雜度有要求。在構造函數中,應該要先把nums數組拷貝一下。
在pick函數中,必然要遍歷數組nums,這樣才能得到 target 值對應的所有索引,之后再生成一個隨機數,返回任一索引。
?
class Solution { public:vector<int> nn;Solution(vector<int>& nums) {nn.assign(nums.begin(), nums.end());}int pick(int target) {vector<int> tmp; //用于記錄target 對應的所有索引for(int i = 0; i < nn.size(); i++){if(nn[i] == target) tmp.push_back(i);}int n = rand() % tmp.size(); //生成0到tmp.size()-1 之間的一個隨機數return tmp[n];} };/*** Your Solution object will be instantiated and called as such:* Solution* obj = new Solution(nums);* int param_1 = obj->pick(target);*/?
?
?
總結
以上是生活随笔為你收集整理的Leetcode 398. 随机数索引 解题思路及C++实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode 382. 链表随机节点
- 下一篇: Leetcode 963. 最小面积矩形