• 白菜刷LeetCode记-384. Shuffle an Array


    今天早上是一道中等难度的题目,考的是洗牌算法。

    个人对洗牌算法还是比较不熟悉的,因此是看答案的。参考链接为: https://www.jianshu.com/p/44100741cef5

    基本思路为:

    1) 将第一个元素与 n 个元素中的任意一个交换;

    2) 将第二个与 n - 1 个元素进行交换;

    3) 重复上述步骤,直到剩下1个元素。

    代码如下:

     1 var original;
     2 var copy;
     3 var num;
     4 /**
     5  * @param {number[]} nums
     6  */
     7 var Solution = function(nums) {
     8     original = nums;
     9     copy = original.concat();
    10     num = original.length;
    11 };
    12 
    13 
    14 /**
    15  * Resets the array to its original configuration and return it.
    16  * @return {number[]}
    17  */
    18 Solution.prototype.reset = function() {
    19     return original;
    20 };
    21 
    22 /**
    23  * Returns a random shuffling of the array.
    24  * @return {number[]}
    25  */
    26 Solution.prototype.shuffle = function() {
    27     let n = num;
    28     while(n>1){
    29         n--;
    30         let k = Math.floor(Math.random()*(n+1));
    31         let value = copy[k];
    32         copy[k] = copy[n];
    33         copy[n] = value;
    34     }
    35     
    36     return copy;
    37 };
    38 
    39 /** 
    40  * Your Solution object will be instantiated and called as such:
    41  * var obj = Object.create(Solution).createNew(nums)
    42  * var param_1 = obj.reset()
    43  * var param_2 = obj.shuffle()
    44  */

    END

  • 相关阅读:
    MySQL5.7二进制安装及多实例
    MySQL5.7版本的yum安装方式
    PHP安装
    MySQL5.6安装部署及多实例主从
    Prometheus监控MySQL和Linux主机结合Grafana出图
    MySQL5.7源码安装(编译)
    MySQL基本管理
    WC框架
    .NET 调用虚方法2 转
    .NET 调用虚方法1 转
  • 原文地址:https://www.cnblogs.com/sssysukww/p/9639708.html
Copyright © 2020-2023  润新知