当前位置: 首页 > news >正文

JAVA练习53-打乱数组

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

一、题目-打乱数组

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加上【0,nums.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();*/


总结

提示:这里对文章进行总结:
 

http://www.lryc.cn/news/10398.html

相关文章:

  • 基于RK3588的嵌入式linux系统开发(三)——Uboot镜像文件合成
  • wireshark抓包后通过工具分包
  • 举个栗子~Tableau 技巧(251):统一多个工作表的坐标轴范围
  • Centos7 调整磁盘空间
  • 小菜版考试系统——“C”
  • Twitter被封号了?最详细的申诉教程在此
  • Docker 安装配置
  • 死锁检测组件-设想
  • 线程池的使用
  • 字节码指令
  • TLS/SSL证书彻底扫盲
  • WGCNA | 值得你深入学习的生信分析方法!~(网状分析-第五步-高级可视化)
  • try catch finally执行顺序
  • 2023年数学建模美赛D题(Prioritizing the UN Sustainability Goals)分析与编程
  • 35岁测试工程师被辞退,给你们一个忠告
  • 华为OD机试题 - 租车骑绿岛(JavaScript)
  • Linux下Python脚本的编写解析fio(minimal格式)(三)
  • 【实战场景二】如何设计一个分布式锁?
  • Java中ThreadLocal类详解
  • 从一致性角度考虑推荐冷启动长尾推荐问题(一)
  • 电脑(Windows)常用快捷键
  • Java类加载器
  • 信号完整性设计规则之单根信号失真最小化
  • Python3 数据结构
  • Compose-Navigation带参传递
  • 【函数栈帧的创建和销毁】 -- 神仙级别底层原理,你学会了吗?
  • Promise的使用及原理
  • 怎么拥有一个帅气的 CMD 命令窗口 ❓ - Windows
  • 时隔多年再学习Vuex,什么?原来如此简单!
  • Linux笔记_gcc