天天看點

<LeetCode天梯>Day041 打亂數組 | 初級算法 | Python

以下為我的天梯積分規則:

每日至少一題:一題積分+10分

若多做了一題(或多一種方法解答),則當日積分+20分(+10+10)

若做了三道以上,則從第三題開始算+20分(如:做了三道題則積分-10+10+20=40;做了四道題則積分–10+10+20+20=60)

初始分為100分

若差一天沒做題,則扣積分-10分(周六、周日除外注:休息)

堅持!!!

初級算法

刷題目錄

設計問題

<LeetCode天梯>Day041 打亂數組 | 初級算法 | Python
<LeetCode天梯>Day041 打亂數組 | 初級算法 | Python

題幹

給你一個整數數組 nums ,設計算法來打亂一個沒有重複元素的數組。

實作 Solution class:

Solution(int[] nums) 使用整數數組 nums 初始化對象

int[] reset() 重設數組到它的初始狀态并傳回

int[] shuffle() 傳回數組随機打亂後的結果

示例:

輸入

[“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();

// 打亂數組 [1,2,3] 并傳回結果。任何 [1,2,3]的排列傳回的機率應該相同。例如,傳回 [3, 1, 2]

solution.reset(); // 重設數組到它的初始狀态 [1, 2, 3] 。傳回 [1, 2, 3]

solution.shuffle(); // 随機傳回數組 [1, 2, 3] 打亂後的結果。例如,傳回 [1, 3, 2]

正常随機

今天直接上代碼了

class Solution:

    def __init__(self, nums: List[int]):
        self.List = nums

    def reset(self) -> List[int]:
        return self.List

    def shuffle(self) -> List[int]:
        copy_list = self.List[:]
        random.shuffle(copy_list)
        return copy_list
      
<LeetCode天梯>Day041 打亂數組 | 初級算法 | Python