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

[数据结构] ArrayList与顺序表(下)

一. ArrayList 的具体使用

1.简单的洗牌算法

①买一副牌
public class Card {public int rank;public String suit;public Card(int rank, String suit) {this.rank = rank;this.suit = suit;}@Overridepublic String toString() {return "["+suit+"" +rank+"]";}
}
  • 定义了面值(rank)和花色(suit)

import java.util.ArrayList;
import java.util.List;public class CardDemo {public static final String[] Cardsuit = {"♥","♠","♣","♦"};public static List<Card> BuyCard(){List<Card> cardList = new ArrayList<>(52);for (int i = 0; i < 4; i++) {for (int j = 1; j <= 13 ; j++) {String suit = Cardsuit[i];int rank = j;Card card = new Card(rank,suit);cardList.add(card);}}return cardList;}public static void main(String[] args) {List<Card> deck = BuyCard();System.out.println(deck);}
}
  • 定义了花色的数组
  • 用二维数组给每一张牌赋值 , 最后用顺序表存储
②洗牌
    private static void swap(List<Card> deck,int i,int j){Card t = deck.get(i);deck.set(i,deck.get(j));deck.set(j,t);}private static void shuffle(List<Card> deck){Random random = new Random();for(int i=deck.size()-1;i>0;i--){int j = random.nextInt(i);swap(deck,i,j);}}
  • j 为 (0,i-1) 之间的随机数 , 交换 i 和 j 下标的元素

    public static void main(String[] args) {List<Card> deck = BuyCard();System.out.println(deck);shuffle(deck);System.out.println(deck);}

2.杨辉三角

[题目] : 给定一个非负整数 numRows生成「杨辉三角」的前 numRows 

            在「杨辉三角」中,每个数是它左上方和右上方的数的和

class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> ret = new ArrayList<>();//类似一个二维数组List<Integer> List0 = new ArrayList<>();List0.add(1);//处理第一行的1ret.add(List0);//在二维数组中添加第一个元素for(int i = 1;i<numRows;i++){List<Integer> cur = new ArrayList<>();cur.add(1);//每一行的第一个元素1List<Integer> preRow = ret.get(i-1);//记录上一行,以便求出新的元素for(int j = 1;j<i;j++){int val1 = preRow.get(j);//第i-1行,的第j个元素int val2 = preRow.get(j-1);//第i-1行,的第j-1个元素cur.add(val1+val2);//求和}cur.add(1);每一行的最后一个元素1ret.add(cur);}return ret;}
}

http://www.dtcms.com/a/354611.html

相关文章:

  • indexDB快速上手
  • 2015考研数学(二)真题
  • 让模糊物体变清晰的视频AI:快速提升画质指南
  • 51c大模型~合集175
  • pcl_案例2 叶片与根茎的分离
  • Redis发布订阅:实时消息系统的极简解决方案
  • MyBatis延迟加载
  • 云计算学习100天-第29天
  • Node.js 的模块化规范是什么?CommonJS 和 ES6 模块有什么区别?
  • Python DELL Logo
  • day1 ———C++———变量和字符串的使用
  • AI驱动企业数字化转型:解码未来三年的智能化变革密码
  • STAGEWISE实战指南:从集成到使用的完整解决方案
  • AI在商业领域的多元应用:从写作助手到精准运营,解锁AI商业工具新价值
  • 流程控制语句(3)
  • 操作系统中的死锁是什么意思
  • 农行广西区分行携手广西专精特新商会共探金融赋能专精特新企业新路径
  • 用KPI导航数字化转型:制造企业如何科学评估系统上线成效
  • 流程控制语句(2)
  • Java网络编程(UDP, TCP, HTTP)
  • 【Linux基础知识系列:第一百一十五篇】使用gzip与bzip2进行压缩
  • 从首次测试到采购40个机器人:Junior kühlk如何自动化协作机械臂矩阵
  • Linux学习-基于TCP实现群聊
  • 医疗AI时代的生物医学Go编程:高性能计算与精准医疗的案例分析(三)
  • windows下查看别的服务器的端口是否通
  • [光学原理与应用-319]:激光器光路设计的主要输出文件的形式和内容
  • 解构与重构:“真人不露相,露相非真人” 的存在论新解 —— 论 “真在” 的行为表达本质
  • 一文读懂:用PyTorch从零搭建一个Transformer模型
  • (LeetCode 每日一题) 3446. 按对角线进行矩阵排序(矩阵、排序)
  • 读大语言模型08计算基础设施