东莞电子产品网站建设,有电脑网站怎么做手机网站,新乡 网站建设,郑州专业做网站企业提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 目录 前言
一、题目-打乱数组
1.题目描述
2.思路与代码
2.1 思路
2.2 代码
总结 前言
提示#xff1a;这里可以添加本文要记录的大概内容#xff1a;
2月17日练习内… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 目录 前言
一、题目-打乱数组
1.题目描述
2.思路与代码
2.1 思路
2.2 代码
总结 前言
提示这里可以添加本文要记录的大概内容
2月17日练习内容 提示以下是本篇文章正文内容下面案例可供参考
一、题目-打乱数组
1.题目描述
给你一个整数数组 nums 设计算法来打乱一个没有重复元素的数组。打乱后数组的所有排列应该是 等可能 的。
实现 Solution class:
Solution(int[] nums) 使用整数数组 nums 初始化对象 int[] reset() 重设数组到它的初始状态并返回 int[] shuffle() 返回数组随机打乱后的结果
示例 1
输入 [Solution, shuffle, reset, shuffle] [[[1, 2, 3]], [], [], []] 输出 [null, [3, 1, 2], [1, 2, 3], [1, 3, 2]]
解释 Solution solution new Solution([1, 2, 3]); solution.shuffle(); // 打乱数组 [1,2,3] 并返回结果。任何 [1,2,3]的排列返回的概率应该相同。例如返回 [3, 1, 2] solution.reset(); // 重设数组到它的初始状态 [1, 2, 3] 。返回 [1, 2, 3] solution.shuffle(); // 随机返回数组 [1, 2, 3] 打乱后的结果。例如返回 [1, 3, 2] 来源力扣LeetCode 链接https://leetcode.cn/problems/shuffle-an-array 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。
2.思路与代码
2.1 思路
1.创建两个类i成员数组nums与tempNums
2.在改造函数中初始化nums与tempNums并将nums中的数据copy到tempNums数组中用来回返nums数组
3.对于回返数组方法将tempNums数组中的数据copy到nums数组中返回nums数组即可
4.对于打乱数组的方法先创建一个随机变量接着遍历数组获得i如何取j为i加上【0nums.length- i中的随机数最后交换索引i与索引j处的数据
2.2 代码
代码如下示例
class Solution {private int[] nums; //数组private int[] tempNums; //临时数组//构造函数public Solution(int[] nums) {//初始化numsthis.nums nums;//初始化tempNumsthis.tempNums new int[nums.length];//将nums的数据copy到tempNum中System.arraycopy(nums,0,tempNums,0,nums.length); }//重设数组public int[] reset() {//将tempNums中的数据copy到nums中System.arraycopy(tempNums,0,nums,0,nums.length);return nums;}public int[] shuffle() {//随机数Random r new Random();for(int i 0;i nums.length;i ){int j i r.nextInt(nums.length - i);//交换i与jint temp nums[i];nums[i] nums[j];nums[j] temp;}return nums;}
}/*** Your Solution object will be instantiated and called as such:* Solution obj new Solution(nums);* int[] param_1 obj.reset();* int[] param_2 obj.shuffle();*/ 总结
提示这里对文章进行总结