欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > 力扣384. 打乱数组

力扣384. 打乱数组

2025/8/30 7:46:33 来源:https://blog.csdn.net/LNsupermali/article/details/139666682  浏览:    关键词:力扣384. 打乱数组

Problem: 384. 打乱数组

文章目录

  • 题目描述
  • 思路
  • 复杂度
  • Code

题目描述

在这里插入图片描述在这里插入图片描述

思路

打乱数组的主要算法:

从1 - n每次生成[i ~ n - i]的一个随机数字,再将原数组下标位置为i的元素和该随机数字位置的元素交换

复杂度

打乱数组的主要算法
时间复杂度:

O ( n ) O(n) O(n);其中 n n n为数组的大小

空间复杂度:

O ( 1 ) O(1) O(1)

Code

class Solution {private int[] nums;private Random rand = new Random();public Solution(int[] nums) {this.nums = nums;}public int[] reset() {return nums;}/*** Shuffling algorithm** @return int[]*/public int[] shuffle() {int n = nums.length;int[] copy = Arrays.copyOf(nums, n);for (int i = 0; i < n; ++i) {// Generate a random number in the [i, n-1] rangeint r = i + rand.nextInt(n - i);// Exchange nums[i] and nums[r]swap(copy, i, r);}return copy;}private void swap(int[] nums, int i, int j) {int temp = nums[i];nums[i] = nums[j];nums[j] = temp;}
}/*** 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();*/

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词