简单的洗牌算法Java加LeetCode刷题

CardDemo类创建

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.CopyOnWriteArrayList;public class CardDemo {public final String[] suits = {"♥","♠","♦","♣"};public List<Card> buyCard(){List<Card> cardList = new ArrayList<>();for (int i = 0; i < 4; i++) {for (int j = 1; j <= 13; j++) {Card card = new Card(suits[i],j);cardList.add(card);}}return cardList;}public void shuffle(List<Card> cardList){Random random = new Random();for (int i = cardList.size()-1; i > 0 ; i--) {int index = random.nextInt(i);swap(cardList,i,index);}}public void swap(List<Card> cardList,int a, int b){Card tmp = cardList.get(a);cardList.set(a,cardList.get(b));cardList.set(b,tmp);}public void getCard(List<Card> cardList){List<Card> hand1 = new ArrayList<>();List<Card> hand2 = new ArrayList<>();List<Card> hand3 = new ArrayList<>();List<List<Card>> hands = new ArrayList<>();hands.add(hand1);hands.add(hand2);hands.add(hand3);for (int i = 0; i < 5; i++){for (int j = 0; j < 3; j++){Card card = cardList.remove(i);hands.get(j).add(card);}}System.out.println("第一个揭牌如下");System.out.println(hand1);System.out.println("第二个揭牌如下");System.out.println(hand2);System.out.println("第三个揭牌如下");System.out.println(hand3);System.out.println("还剩的牌如下");System.out.println(cardList);}
}

Card类创建

public class Card {private String suit;//花色private int rank;//数字public Card(String suit, int rank) {this.suit = suit;this.rank = rank;}public String getSuit() {return suit;}public void setSuit(String suit) {this.suit = suit;}public int getRank() {return rank;}public void setRank(int rank) {this.rank = rank;}@Overridepublic String toString() {return suit + ":" + rank + " ";}
}

Test

import java.util.List;public class Test {public static void main(String[] args) {CardDemo cardDemo = new CardDemo();List<Card> cardList = cardDemo.buyCard();System.out.println("买的牌如下");System.out.println(cardList);System.out.println("洗牌");cardDemo.shuffle(cardList);System.out.println(cardList);System.out.println("揭牌");cardDemo.getCard(cardList);}
}

LeetCode

27. 移除元素

class Solution {public int removeElement(int[] nums, int val) {List<Integer> List = new ArrayList<>();for (int i = 0; i < nums.length; i++){if(nums[i] == val){continue;}else {List.add(nums[i]);}}for (int i = 0; i < List.size(); i++){nums[i] = List.get(i);}int len = List.size();return len;}
}

88. 合并两个有序数组

class Solution {public static void merge(int[] nums1, int m, int[] nums2, int n) {List<Integer> list = new ArrayList<>();for (int i = 0; i < m; i++) {list.add(nums1[i]);}for (int i = 0; i < n; i++) {list.add(nums2[i]);}int gap = list.size();while(gap >= 1){shellSort(list,gap);gap /= 2;}for (int i = 0; i < m+n; i++){nums1[i] = list.get(i);}}public static void shellSort(List<Integer> list, int gap){for (int i = gap; i < list.size() ; i++) {int tmp = list.get(i);int j = i - gap;for (; j >= 0; j -= gap) {if(list.get(j) > tmp){list.set(j+gap, list.get(j));}else {break;}}list.set(j+gap, tmp);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/5503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】进程创建

思维导图 学习内容 在这一篇博客的主要内容是学习fork函数&#xff0c;了解fork函数的功能、返回值等。我们需要学会使用fork函数创建子进程。 学习目标 进程的概念fork函数的初始fork函数的返回值写时拷贝fork函数的常规用法fork函数调用失败的原因 零、进程的概念 进程&am…

如何利用仪表构造InfiniBand流量在数据中心测试中的应用

一、什么是Infiniband&#xff1f; 在当今数据爆炸的时代&#xff0c;数据中心作为信息处理的中心枢纽&#xff0c;面临着前所未有的挑战。传统的通信方式已经难以满足日益增长的数据传输需求&#xff0c;而InfiniBand技术的出现&#xff0c;为数据中心带来了全新的通信解决方…

复现SMO算法:序列最小优化的启发式方法【三、算法原理揭秘-2】

接下来的内容将转向SMO算法的第二个核心组成部分——选择要优化的乘数的启发式方法。在这篇博客中&#xff0c;我们将探讨算法如何通过启发式选择策略高效地识别和更新拉格朗日乘数。通过对比直接优化的分析方法和启发式方法的策略选择&#xff0c;我们能够更全面地理解SMO算法…

2024洞悉AI人群新范式:AI机会人群社媒研究报告暨人群工厂系列白皮书

来源&#xff1a;蓝色光标 背景&#xff1a;AI生态初步成型&#xff0c;但仍需寻找清晰的商业化场景和机会 • 大模型厂商、核心零部件厂商&#xff08;NVIDIA、Intel&#xff09;、装配商&#xff08;​AIPC、AI手机&#xff09;、AI应用厂商共存&#xff0c;生态系统已经重构…

Windows如何通过wsl2迅速启动Docker desktop的PHP的Hyperf项目容器?

一、安装WSL 什么是WSL&#xff1f; 官网&#xff1a;什么是WSL&#xff1f; Windows Subsystem for Linux (WSL) 是一个在Windows 10和Windows 11上运行原生Linux二进制可执行文件的兼容性层。 换句话说&#xff0c;WSL让你可以在Windows系统上运行Linux环境&#xff0c;而无需…

实验8-13:补全代码,删除字符数组中多个字符

实验8-13&#xff1a;补全代码&#xff0c;删除字符数组中多个字符 【问题描述】 输入字符串存在数组char c[30]中&#xff0c;输入m,n&#xff0c;删除下标m开始的n个字符。输出删除后的结果。 说明&#xff1a;请只提供需要补全的代码部分&#xff0c;不需要提供完整程序。…

【学习vue 3.x】(五)VueRouter路由与Vuex状态管理

文章目录 章节介绍本章学习目标 路由的基本搭建与嵌套路由模式vue路由的搭建嵌套路由模式 动态路由模式与编程式路由模式动态路由模式编程式路由 命名路由与命名视图与路由元信息命名路由命名视图路由元信息 路由传递参数的多种方式及应用场景路由传参 详解route对象与router对…

代码审计之SAST自动化

前言: 很久没写文章了&#xff0c;有点忙&#xff0c;落个笔&#xff0c;分享一些捣鼓或说适配好的一些好玩的东西。 脚本工具不开源&#xff0c;给一些思路&#xff0c;希望能给大家带来一些收获。 笔者能力有限&#xff0c;如有错误&#xff0c;欢迎斧正。 正文&#xff1a…

使用docker创建rocketMQ主从结构,使用

1、 创建目录 mkdir -p /docker/rocketmq/logs/nameserver-a mkdir -p /docker/rocketmq/logs/nameserver-b mkdir -p /docker/rocketmq/logs/broker-a mkdir -p /docker/rocketmq/logs/broker-b mkdir -p /docker/rocketmq/store/broker-a mkdir -p /docker/rocketmq/store/b…

渗透测试类面试非技术问题

1、此时你负责等保测评几台服务器设备&#xff0c;没有相关权限&#xff0c;客户不愿意提供&#xff0c;你如何处理 答&#xff1a; 梳理相关服务器的测评流程&#xff0c;让客户按测评流程走一遍&#xff0c;你看着他们操作&#xff0c;或者录屏等方式&#xff0c;如果这…

卫星通信现状与展望二 -- 星链

美国星链通信系统(StarLink) 1. 基本情况 星链通信系统是由美国太空探索技术公司(SpaceX)于2014年提出的低轨互联网星座计划,目标是建设一个全球覆盖、大容量、低时延的天基通信系统,在全球范围内提供高速互联网服务。 星链计划经过多轮方案变更调整,共规划了3期系统…

Maven解决找不到依赖项

报错如图 方案一&#xff1a;Maven的Setting文件中添加albaba的镜像文件 1.下载maven &#xff1a;Maven – Download Apache Maven 2. 配置镜像 更改成这个&#xff1a; <mirror> <id>alimaven</id> <name>aliyun maven</name> <url&g…

Python量化炒股的财务因子选股

Python量化炒股的财务因子选股-财务因子选股 选股是股市投资的第一步&#xff0c;是最基础的一步&#xff0c;也是最重要的一步。 初识财务因子选股 量化选股是利用数量化的方法选择股票组合&#xff0c;期望该股票组合能够获得超越基准收益率的投资行为。总的来说&#xff…

PDF 正确指定页码后,挂载的书签页码对不上

这个问题与我的另一篇中方法一样 如何让一个大几千页的打开巨慢的 PDF 秒开-CSDN博客 https://blog.csdn.net/u013669912/article/details/138166922 另作一篇的原因 一篇文章附带一个与该文章主题不相关的问题时&#xff0c;不利于被遇到该问题的人快速搜索发现以解决其遇到…

数据结构学习/复习1--时间复杂度计算/异或的几个实际用途

一、什么是数据结构和算法 1注&#xff1a;在内存中的存储管理数据 2注&#xff1a;解决问题的方法 二、时间复杂度 1.算法的效率 2.时间复杂度的概念 计算时间复杂度案例1&#xff1a; 计算时间复杂度案例2&#xff1a; 计算时间复杂度案例3&#xff1a; 计算…

问题(十五)性能分析组件类加载问题

一、引言 最近作者在做性能分析服务的agent&#xff0c;有个功能是在代理启动的时候加载配置中心&#xff0c;拿到具体哪些目录下的类需要增强&#xff0c;这里碰到了类加载失败的问题。 二、类加载 1、问题 这里使用了pom的设置&#xff0c;在class文件被拉进去&#xff0c;…

Fastadmin 日常项目常见用法整理

ps&#xff1a;自己使用笔记备用&#xff0c;不间断更新&#xff0c;常见功能点 一&#xff0c;数据库后缀 结尾字符示例类型要求字段说明timerefreshtimebigint/datetime识别为日期时间型数据&#xff0c;自动创建选择时间的组件imagesmallimagevarchar识别为图片文件&#…

HTML5(1)

目录 一.HTML5(超文本&#xff08;链接&#xff09;标记&#xff08;标签<>&#xff09;语言) 1.开发环境&#xff08;写代码&#xff0c;看效果&#xff09; 2.vscode 使用 3.谷歌浏览器使用 4.标签语法 5.HTML基本骨架&#xff08;网页模板&#xff09; 6.标签的…

vue钩子函数、生命周期

Vue.js的生命周期主要分为四个阶段&#xff1a;创建阶段、编译阶段、挂载阶段、更新与销毁阶段。每个阶段都有对应的生命周期钩子函数。 创建阶段&#xff1a;包含生命周期钩子&#xff1a;beforeCreate 和 created beforeCreate: 在实例初始化之后&#xff0c;数据观测&#x…

Jetson Orin NX L4T35.5.0平台LT6911芯片 调试记录(2)vi discarding frame问题调试

基于上篇调试记录 Jetson Orin NX L4T35.5.0平台LT6911芯片 调试记录(1)MIPI问题调试-CSDN博客 1.前言 当通过gstreamer持续捕获视频设备时,帧数会下降,并且I输入越高,丢失的帧数越多。 当达到4k30hz时,它完全无法使用,系统会在几秒钟的收集后崩溃并重新启动 4k30hz …