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

网站极简设计写小说的小网站

网站极简设计,写小说的小网站,太原建站公司模板,男女做那个的网站本节课的内容#xff0c;就让我们来学习一下ArrayList集合的应用#xff0c;ArrayList的本质就是一个顺序表#xff0c;那下面一起来学习吧 目录 一、杨辉三角 1.题目详情及链接 2.剖析题目 3.思路及代码 二、洗牌算法 1.创造牌对象 2.创造一副牌 3.洗牌操作 4.发… 本节课的内容就让我们来学习一下ArrayList集合的应用ArrayList的本质就是一个顺序表那下面一起来学习吧 目录 一、杨辉三角 1.题目详情及链接 2.剖析题目   3.思路及代码 二、洗牌算法 1.创造牌对象 2.创造一副牌 3.洗牌操作 4.发牌操作 一、杨辉三角 这不是普通的杨辉三角这是力扣里面的杨辉三角 1.题目详情及链接 力扣LeetCode官网 - 全球极客挚爱的技术成长平台 有同学说这里的题目也看不出跟ArrayList集合有鸡毛关系呀我说你别急继续往下看 看到这里你急了没有题目给的类型是什么狗屎这不就与ArrayList扯上关系了嘛这到底是什么意思呢接着往下看 2.剖析题目   1题目的要求是根据参数生成杨辉三角的前numRows行并返回存放杨辉三角的空间 比如numRows3就生成杨辉三角的前面3行如果你用普通的二维数组存储那就返回该二维数组的地址。 2剖析返回值 我们也应该可以猜到ListListInteger也是表示二维数组的意思 此时还不算完整的二维数组List只是一个接口需要实例化对象 3我们需要将这些数字放入该二维数组中 3.思路及代码 1思路解析 通过面向对象的思想来完成 第一步分析杨辉三角的规律 题目要求生成杨辉三角的前numRows行也就是可以一行一行生成 规律是显而易见的除了第一行其他每行的第一个元素和最后一个元素的值都是1从第3行开始中间的值与前一行的值紧密相连 第二步创建二维数组并单独完成杨辉三角的第一行 不用担心测试用例一行都没有1numRows30 ListListInteger list new ArrayList(); ListInteger first new ArrayList(); //先设置第一行的元素 first.add(1); list.add(first); 核心思想先单独建立一个一维的顺序表存放好一行的元素然后再将这个一维的顺序表当成一个元素放入二维的顺序表中后面也是一样的思想 第三步存放第二行及后面的元素 for (int i 1; i numRows; i) {//每层循环代表一行ListInteger ret new ArrayList();//定义一个一维数组 } 我们将在这个循环里面存放完成后续的行如果只有一行就不会进入这个循环内 第四步分析如何将每一行存入 由前面分析知道第二行开始第一个和最后一个元素都是1我们可以在前面和最后面存入1 for (int i 1; i numRows; i) {//每层循环代表一行ListInteger ret new ArrayList();//定义一个一维数组//1.添加第一个元素ret.add(1);//2.设置中间元素,从第二列开始//3.添加最后元素ret.add(1);list.add(ret);//将每一行放入二维数组中} 然后中间的元素如何添加第二行是没有中间元素的而且中间的元素都是与前一行的元素有着紧密的关系所以我们也需要考虑好。首先我们需要从第二个位置开始存放然后第几行就说明那一行有多少个元素就与行号绑定了关系 for (int i 1; i numRows; i) {//每层循环代表一行ListInteger ret new ArrayList();//定义一个一维数组//1.添加第一个元素ret.add(1);//2.设置中间元素,从第二列开始for (int j 1; j i; j) {//利用面向对象的思想拿到元素int tmp list.get(i-1).get(j)list.get(i-1).get(j-1);ret.add(tmp);}//3.添加最后元素ret.add(1);list.add(ret);} 2完整代码 public ListListInteger generate(int numRows) {ListListInteger list new ArrayList();ListInteger first new ArrayList();//先设置第一行的元素first.add(1);list.add(first);//从第二行开始for (int i 1; i numRows; i) {//每层循环代表一行ListInteger ret new ArrayList();//定义一个一维数组//1.添加第一个元素ret.add(1);//2.设置中间元素,从第二列开始for (int j 1; j i; j) {int tmp list.get(i-1).get(j)list.get(i-1).get(j-1);ret.add(tmp);}//3.添加最后元素ret.add(1);list.add(ret);}return list; } 3总结一下思路 第一将杨辉三角分成两个部分存储第一行和第一行后面的 第二存储第一行后面的时候又分成三部分存储第一个元素、中间部分元素、最后一个元素 第三存储中间部分元素时通过与前一行的元素的关系进行存储利用面向对象的思想获得前一行的元素 二、洗牌算法 其实洗牌算法就是ArrayList的一种应用或者运用没有那么的高大尚下面简单介绍洗牌算法的一些基本功能和流程 下面是程序运行起来的结果  什么是洗牌算法 1使用类和对象的知识定义一个牌对象 2创造出一副排序好的牌存储在ArrayList中有牌 3然后将这些牌的顺序打乱洗牌 4将洗乱的牌随机分发给三个人发牌 下面开始讲解洗牌算法 1.创造牌对象 牌这个对象的属性有两个第一是花色第二就是号码然后我们提供一下构造方法在创建每一张牌的时候就赋值最后重写一下toString方法用来打印牌。 public class Card {//用来定义一张牌public String suit;//牌的花色public int num;//号码public Card(String suit, int num) {this.suit suit;this.num num;}Overridepublic String toString() {return suitnum;} }2.创造一副牌 main函数用来实例化对象和调用对象中的方法创造牌的方法 public static void main(String[] args) {PlayCard game new PlayCard();System.out.println(设置牌);ListCard cards game.setCard();System.out.println(cards);} 创建一个类用来表示玩牌的游戏里面存放创建牌、洗牌和发牌的操作 public class PlayCard {public static final String[] suits {♠,♥,♣,♦};//定义花色的数组//1.设置牌操作public ListCard setCard() {ListCard cards new ArrayList();//定义一个数组用来存放所有牌for (int i 0; i 4; i) {//每次循环代表一个花色for (int j 1; j 13 ; j) {//13个号码String suit suits[i];//获得一个花色Card card new Card(suit,j);//定义一个牌对象并赋值cards.add(card);//将牌放入一个牌数组中}}return cards;//返回一副牌} } 1这是一个带返回值的函数。 2第一层循环代表花色第二层循环代码号码每循环一次拿到一个花色和号码然后将这两个赋值给牌对象并将牌放入ArrayList集合中cards 3最后将这个集合返回接收返回值就拿到了返回值 3.洗牌操作 这里先把上一阶段创造牌的操作隐藏独将洗牌操作 这里洗牌的思想是1从后面遍历这副牌每张牌都随机与前面某一张牌交换 2获得前面随机牌使用产生随机数种子 3交换则单独包装成一个方法 public class PlayCard {//在这里类里面操作牌设置牌洗牌和发牌public static final String[] suits {♠,♥,♣,♦};//定义花色的数组//1.设置牌操作//这里介绍洗牌操作所以设置牌的操作就省略了//2.洗牌操作public void shuffle(ListCard cards) {Random random new Random();for (int i 51; i 0; i--) {int index random.nextInt(i);//随机获取一个牌下标与i下标的牌交换swap(cards,i,index);}//return cards;}private static void swap(ListCard cards,int i,int j) {//交换两张牌Card tmp cards.get(i);cards.set(i,cards.get(j));cards.set(j,tmp);}}4.发牌操作 同样的我们把前面创造牌和洗牌的操作隐藏起来单独介绍发牌操作 我们发牌的思路是1有三个人轮流接牌每次接一张一共接五轮2每个人随机接牌每拿到一张牌就从这副牌中删除3每个人拿到五张牌每个人看作一个一维数组要保存三个人的牌就需要一个二维数组。 public class PlayCard {//在这里类里面操作牌设置牌洗牌和发牌public static final String[] suits {♠,♥,♣,♦};//定义花色的数组//1.设置牌操作//2.洗牌操作//3.发牌操作public ListListCard getCard(ListCard cards) {//定义三个对象存取牌ListCard hand1 new ArrayList();ListCard hand2 new ArrayList();ListCard hand3 new ArrayList();//定义一个二维数组存取三个对象ListListCard hand new ArrayList();hand.add(hand1);hand.add(hand2);hand.add(hand3);//每个人只能拿五张牌for (int i 0; i 5; i) {for (int j 0; j 3; j) {Card card cards.remove(0);//每次拿到第一张牌并从数组中删掉//放入每个人手中hand.get(j).add(card);}}return hand;} } 1用三个一维的集合代表三个一维数组 2再定义一个集合存放三个一维集合 3第一层循环每循环一次就是一张牌第二层循环就是每个人轮流拿牌 4 hand.get(j)代表第几个人add(card)代表把这张牌给某个人 完整代码 public static void main(String[] args) {PlayCard game new PlayCard();System.out.println(设置牌);ListCard cards game.setCard();System.out.println(cards);System.out.println(洗牌后);game.shuffle(cards);System.out.println(cards);System.out.println(发牌);ListListCard hand game.getCard(cards);for (int i 0; i 3 ; i) {System.out.println(第(i1)个人的牌为hand.get(i));}System.out.println(剩余的牌为);System.out.println(cards);} public class Card {//用来定义一张牌public String suit;//牌的花色public int num;//号码public Card(String suit, int num) {this.suit suit;this.num num;}Overridepublic String toString() {return suitnum;} } import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.concurrent.Callable;public class PlayCard {//在这里类里面操作牌设置牌洗牌和发牌public static final String[] suits {♠,♥,♣,♦};//定义花色的数组//1.设置牌操作public ListCard setCard() {ListCard cards new ArrayList();//定义一个数组用来存放所有牌for (int i 0; i 4; i) {//四种花色for (int j 1; j 13 ; j) {//13个号码String suit suits[i];//获得一个花色Card card new Card(suit,j);//定义一个牌对象并赋值cards.add(card);//将牌放入一个牌数组中}}return cards;//返回一副牌}//2.洗牌操作public void shuffle(ListCard cards) {Random random new Random();for (int i 51; i 0; i--) {int index random.nextInt(i);//随机获取一个牌下标与i下标的牌交换swap(cards,i,index);}//return cards;}private static void swap(ListCard cards,int i,int j) {//交换两张牌Card tmp cards.get(i);cards.set(i,cards.get(j));cards.set(j,tmp);}//3.发牌操作public ListListCard getCard(ListCard cards) {//定义三个对象存取牌ListCard hand1 new ArrayList();ListCard hand2 new ArrayList();ListCard hand3 new ArrayList();//定义一个二维数组存取三个对象ListListCard hand new ArrayList();hand.add(hand1);hand.add(hand2);hand.add(hand3);//每个人只能拿五张牌for (int i 0; i 5; i) {for (int j 0; j 3; j) {Card card cards.remove(0);//每次拿到第一张牌并从数组中删掉//放入每个人手中hand.get(j).add(card);}}return hand;} } 本节的内容就是介绍ArrayList集合的用法可以当成一维数组也可以当成二维数组。看到这里本机就结束了快趁着这个感觉去刷题吧
http://www.zqtcl.cn/news/291921/

相关文章:

  • 公司官方网站建设需要多少钱wordpress单页面制作
  • 社群网站建设网站推广的方式有哪几种
  • 培训机构活动策划网站wordpress 改端口
  • 北京网站制作与营销培训用asp做网站视频
  • 江苏丹阳建设公司网站做网站中的剪辑图片
  • 纯静态网站怎样广州工程造价信息网
  • 为什么网页不能打开建设银行网站企业网站开发综合实训
  • 企业网站制作 深圳网站建站行业公司主页建设
  • 外汇直播网站建设开发做网站空间商需要办什么手续
  • 源码哥网站的模板皮肤病在线咨询医生免费咨询
  • 温岭市市住房和城乡建设规划局网站附近的电脑培训班在哪里
  • 网站备案百度站长提交减肥网站源码
  • 网站添加文章机械代加工厂家
  • 学做各种糕点的网站cn网站建设多少钱
  • 首页网站关键词优化教程如何查询网站点击率
  • 文章类型的网站模版北京朝阳区房价2023年最新房价
  • wap网站发布注销主体和注销网站
  • 微信小程序 做网站满足客户的分销管理系统
  • 高佣联盟做成网站怎么做wordpress 更新版本
  • 杭州营销网站建设公司成都网站排名优化报价
  • 网站建设设计哪家好太原新建火车站
  • 医疗网站建设信息cps推广平台有哪些
  • rp怎么做网站备案 添加网站
  • 汕尾手机网站设计淘宝客做网站怎么做
  • 营口公司网站建设网站百度seo关键词优化
  • 网站开发命名规范汉中网站制作
  • 嘉定网站建设公司泗水做网站ys178
  • 邯郸网站设计招聘网齐家网和土巴兔装修哪家好
  • 京东网站推广方式jquery网页设计成品
  • 做本地网站卖四川省建设科技协会网站首页