0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

LeetCode初级算法-设计问题01:Shuffle an Array (打乱数组)

电子设计 来源:电子设计 作者:电子设计 2020-12-10 22:21 次阅读

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、编程实现

python

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

    详解Spark Shuffle原理及Shuffle操作问题解决

    Spark Shuffle原理、Shuffle操作问题解决和参数调优
    发表于 04-29 17:11

    请问LeetCode448如何找到所有数组中消失的数字?

    LeetCode448如何找到所有数组中消失数字的方法
    发表于 11-05 07:46

    数组元素超过9个如何根据 Array 自动创建 Cluster

    数组元素超过9个如何根据 Array 自动创建 Cluster
    发表于 04-10 14:28

    Java数组算法试题

    Java数组算法试题Java数组算法试题Java数组算法试题
    发表于 01-15 16:16 0次下载

    一种散乱数据点云快速简化算法_迟源

    一种散乱数据点云快速简化算法_迟源
    发表于 03-19 11:46 0次下载

    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次阅读

    LabVIEW初级教程之数组和簇的相关例程免费下载

    本文档的主要内容详细介绍的是LabVIEW初级教程之数组和簇的相关例程免费下载。
    发表于 01-15 09:59 22次下载
    LabVIEW<b class='flag-5'>初级</b>教程之<b class='flag-5'>数组</b>和簇的相关例程免费下载

    LeetCode初级算法-其他01:位1的个数

    搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法、机器学习干货 csdn:[链接] csdn:[链接] github:[链接]
    的头像 发表于 12-10 22:17 352次阅读

    LeetCode初级算法-设计问题02:最小栈

    搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法、机器学习干货 csdn:[链接] csdn:[链接] github:[链接]
    的头像 发表于 12-10 22:21 390次阅读

    LeetCode初级算法-动态规划01:爬楼梯

    搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法、机器学习干货 csdn:[链接] csdn:[链接] github:[链接]
    的头像 发表于 12-10 22:21 432次阅读

    ARRAY 数据类型的变量

    中,系统将提供自动完成功能。 将打开“数组”对话框。 在“数据类型”文本框中,指定数组元素的数据类型。 在“ARRAY 限值”(ARRAY limits) 输入字段中,指定各维度的上限
    的头像 发表于 07-06 11:08 1113次阅读

    数组和C++ std::array详解

    std::array是C++容器库提供的一个固定大小数组的容器。其与内置的数组相比,是一种更安全、更容易使用的数组类型。
    的头像 发表于 07-19 11:02 1119次阅读
    ​<b class='flag-5'>数组</b>和C++ std::<b class='flag-5'>array</b>详解

    什么是数组数组有什么用?数组的使用方法

    数组Array)是有序的元素序列。
    的头像 发表于 11-08 14:58 1711次阅读
    什么是<b class='flag-5'>数组</b>?<b class='flag-5'>数组</b>有什么用?<b class='flag-5'>数组</b>的使用方法