(初级)7.Shuffle an Array

one_zheng · · 710 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

打乱一个没有重复元素的数组。

image.png

golang代码:

package shuffle

import (
    "math/rand"
    "time"
)

type Solution struct {
    array  []int
    backup []int //备份
}

func Constructor(nums []int) Solution {
    return Solution{
        backup: append([]int{}, nums...),
        array:  append([]int{}, nums...),
    }
}

// Reset the array to its original configuration and return it.
func (this *Solution) Reset() []int {
    this.array = this.backup
    return this.backup
}


func (this *Solution) Shuffle() []int {
    if this.array == nil {
        return nil
    }
    for i := 1; i < len(this.array); i++ {
        p := RandInt64_(0, int64(i))
        a := this.array[i]
        this.array[i] = this.array[p]
        this.array[p] = a
    }
    return this.array
}

// RandInt64_ 区间随机数
func RandInt64_(min, max int64) int64 {
    if min >= max || max == 0 {
        return max
    }
    return rand.Int63n(max-min) + min + 1
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:one_zheng

查看原文:(初级)7.Shuffle an Array

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

710 次点击  
加入收藏 微博
下一篇:python后端架构
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传