p105 打乱数组(leetcode 384)

一:解题思路

二:完整代码示例 (C++版和Java版)

C++:

class Solution 
{
private:
    vector<int> nums;
    vector<int> orignalNums;
public:
    Solution(vector<int>& nums) 
    {
        this->nums = nums;
        this->orignalNums = nums;
    }

    vector<int> reset() 
    {
        return this->orignalNums;
    }

    vector<int> shuffle() 
    {
        for (int i = nums.size() - 1; i >= 0; i--)
        {
            int j = rand() % (i+1);
            swap(nums[i],nums[j]);
        }

        return nums;
    }
};

Java:

class Solution {
        private Random rnd=new Random();
        private int[] nums;
        private int[] orignalNums;
        
        private void swap(int[] nums,int i,int j)
        {
            int temp=nums[i];
            nums[i]=nums[j];
            nums[j]=temp;
        }
        
        public Solution(int[] nums)
        {
              this.nums=nums;
              this.orignalNums=Arrays.copyOf(nums,nums.length);
        }


        public int[] reset() 
        {
               return this.orignalNums;
        }

        public int[] shuffle() 
        {
               for(int i=nums.length-1;i>=0;i--)
               {
                   int j=rnd.nextInt(i+1);
                   swap(nums,i,j);
               }
               
               return nums;
        }
    }

 

posted @ 2020-04-08 17:55  repinkply  阅读(128)  评论(0)    收藏  举报