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 发布!
审核编辑 黄昊宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
人工智能
+关注
关注
1791文章
47279浏览量
238519 -
机器学习
+关注
关注
66文章
8418浏览量
132646 -
深度学习
+关注
关注
73文章
5503浏览量
121170 -
leetcode
+关注
关注
0文章
20浏览量
2328
发布评论请先 登录
相关推荐
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
•430次阅读
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) 输入字段中,指定各维度的上限
评论