日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

384. 打乱数组

發(fā)布時間:2023/11/29 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 384. 打乱数组 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

384. 打亂數(shù)組

給你一個整數(shù)數(shù)組 nums ,設(shè)計算法來打亂一個沒有重復(fù)元素的數(shù)組。

實(shí)現(xiàn) Solution class:

  • Solution(int[] nums) 使用整數(shù)數(shù)組 nums 初始化對象
  • int[] reset() 重設(shè)數(shù)組到它的初始狀態(tài)并返回
  • int[] shuffle() 返回數(shù)組隨機(jī)打亂后的結(jié)果
示例:輸入 ["Solution", "shuffle", "reset", "shuffle"] [[[1, 2, 3]], [], [], []] 輸出 [null, [3, 1, 2], [1, 2, 3], [1, 3, 2]]解釋 Solution solution = new Solution([1, 2, 3]); solution.shuffle(); // 打亂數(shù)組 [1,2,3] 并返回結(jié)果。任何 [1,2,3]的排列返回的概率應(yīng)該相同。例如,返回 [3, 1, 2] solution.reset(); // 重設(shè)數(shù)組到它的初始狀態(tài) [1, 2, 3] 。返回 [1, 2, 3] solution.shuffle(); // 隨機(jī)返回數(shù)組 [1, 2, 3] 打亂后的結(jié)果。例如,返回 [1, 3, 2]

提示:

  • 1 <= nums.length <= 200
  • -10610^6106 <= nums[i] <= 10610^6106
  • nums 中的所有元素都是 唯一的
  • 最多可以調(diào)用 5 * 10410^4104 次 reset 和 shuffle

解題思路

  • 對于 int[] reset() 需要重設(shè)數(shù)組到它的初始狀態(tài)并返回,因此我們需要使用一個變量記錄初始的數(shù)組。
  • 對于int[] shuffle() 需要返回數(shù)組隨機(jī)打亂后的結(jié)果,因此我們可以從后往前遍歷原數(shù)組,例如對于下標(biāo)size-1,通過產(chǎn)生一個[0,size-1]隨機(jī)數(shù),隨機(jī)選出一個下標(biāo),將其對應(yīng)的元素與當(dāng)前下標(biāo)對應(yīng)的元素進(jìn)行交換,那么就完成了隨機(jī)數(shù)組第一個元素的選擇。對于第二個元素,也是采用同樣的方法,隨機(jī)選出[0,size-2]中的一個元素進(jìn)行填充,不斷循環(huán),直到將隨機(jī)數(shù)組填充完成,這樣就可以保證每一個元素的位置都隨機(jī)選出的。
  • 代碼

    class Solution { public:vector<int> old;Solution(vector<int>& nums) {old=nums;}vector<int> reset() {return old;}vector<int> shuffle() {auto temp=old;for (int i = temp.size(); i >=1 ; --i) {swap(temp[rand()%i],temp[i-1]);}return temp;} };/*** Your Solution object will be instantiated and called as such:* Solution* obj = new Solution(nums);* vector<int> param_1 = obj->reset();* vector<int> param_2 = obj->shuffle();*/

    總結(jié)

    以上是生活随笔為你收集整理的384. 打乱数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。