LeetCode初級算法--設計問題01:Shuffle an Array (打亂數組)
一、引子
這是由LeetCode官方推出的的經典面試題目清單~
這個模塊對應的是探索的初級算法~旨在幫助入門算法。我們第一遍刷的是leetcode推薦的題目。
二、題目
打亂一個沒有重復元素的數組。
示例:
// 以數字集合 1, 2 和 3 初始化數組。
int[] nums = {1,2,3};
Solution solution = new Solution(nums);
// 打亂數組 [1,2,3] 并返回結果。任何 [1,2,3]的排列返回的概率應該相同。
solution.shuffle();
// 重設數組到它的初始狀態[1,2,3]。
solution.reset();
// 隨機返回數組[1,2,3]打亂后的結果。
solution.shuffle();
1、思路
遍歷數組每個位置,每次都隨機生成一個坐標位置,然后交換當前位置和隨機位置的數字,這樣如果數組有n個數字,那么也隨機交換了n組位置,從而達到了洗牌的目的。
2、編程實現
class Solution(object):
def __init__(self, nums):
"""
:type nums: List[int]
"""
self.data = nums
def reset(self):
"""
Resets the array to its original configuration and return it.
:rtype: List[int]
"""
return self.data
def shuffle(self):
"""
Returns a random shuffling of the array.
:rtype: List[int]
"""
# 方法一:
# ans = copy.deepcopy(self.data)
# random.shuffle(ans)
# return ans
#方法二
ans = copy.deepcopy(self.data)
for i in range(len(ans)):
j = random.randint(i, len(ans)-1)
ans[i], ans[j] = ans[j], ans[i]
return ans
# Your Solution object will be instantiated and called as such:
# obj = Solution(nums)
# param_1 = obj.reset()
# param_2 = obj.shuffle()
本文由博客一文多發平臺 OpenWrite 發布!
審核編輯 黃昊宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
人工智能
+關注
關注
1804文章
48736瀏覽量
246659 -
機器學習
+關注
關注
66文章
8492瀏覽量
134122 -
深度學習
+關注
關注
73文章
5555瀏覽量
122495 -
leetcode
+關注
關注
0文章
20瀏覽量
2429
發布評論請先 登錄
相關推薦
熱點推薦
pads9.5在creat array時,會打亂我排列好的元器件,是怎么回事?
` 本帖最后由 a3531517 于 2015-12-30 17:32 編輯
pads9.5在creat array時,會打亂我排列好的元器件,是怎么回事?`
發表于 12-30 17:30
請教大神關于IMAQ模塊中的問題:IMAQCreate與 IMAQ Image To Array函數的算法原理是什么?
原理與MATLAB中的rgb2gray函數有區別嗎?IMAQ Image To Array函數是怎么講圖片轉成像素灰度的二維數組呢?其算法原理有是什么呢?謝謝。
發表于 03-12 14:11
LeetCode 215. Kth Largest Element in an Array
LeetCode 215. Kth Largest Element in an ArrayDescription Find the kth largest element
發表于 01-17 01:46
?477次閱讀
LeetCode初級算法-其他01:位1的個數
搜索微信公眾號:'AI-ming3526'或者'計算機視覺這件小事' 獲取更多算法、機器學習干貨 csdn:[鏈接] csdn:[鏈接] github:[鏈接]
LeetCode初級算法-設計問題02:最小棧
搜索微信公眾號:'AI-ming3526'或者'計算機視覺這件小事' 獲取更多算法、機器學習干貨 csdn:[鏈接] csdn:[鏈接] github:[鏈接]
LeetCode初級算法-動態規劃01:爬樓梯
搜索微信公眾號:'AI-ming3526'或者'計算機視覺這件小事' 獲取更多算法、機器學習干貨 csdn:[鏈接] csdn:[鏈接] github:[鏈接]
ARRAY 數據類型的變量
中,系統將提供自動完成功能。 將打開“數組”對話框。 在“數據類型”文本框中,指定數組元素的數據類型。 在“ARRAY 限值”(ARRAY limits) 輸入字段中,指定各維度的上限
評論