(初级)7.Shuffle an Array

2018-08-11  本文已影响5人  one_zheng

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

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
}
上一篇 下一篇

猜你喜欢

热点阅读