List线性表常见方法:
一.扑克牌:
规则:
1.买牌:按花色从 A-K 排列
2.洗牌
3.三名玩家按顺序轮流抽取五张牌
4.判断玩家是否持有“红桃A”,若有则该玩家输了
4.判断玩家手中是否有某张牌时, hands的类型就是 List<List<Card>>,它的元素的类型是 List<Card>。
Java 对象的相等语义判断不能使用引用判断。应该覆写 Object.equals() 方法。覆写的通用模板:
public boolean equals(Object o){
//如果 o 为 null 或者 o 与 自定义的 不是一个类型,直接返回false
if(null == o || !(o instanceof Card)){
return false;
}
//如果 o 与 this 指向同一块区域返回 true
if(this == o){
return true;
}
//否则,进行判断,根据类的定义来比较
return ……;
}
需要用到引用的相等语义比较必须调用 equals()方法;需要自定义类,会被调用 equals()方法,就必须覆写 List.contains (内部会调用元素类型的 equals())
覆写 equals()方法练习:
LeetCode 杨辉三角:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
思路:
方法1实现:
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> list = new ArrayList<>();
for(int i = 0; i < numRows;i++){
list.add(new ArrayList<>());
}
for(int i = 0;i <numRows;i++){
for(int j = 0;j <= i;j++){
list.get(i).add(1);
}
}
for(int i = 2;i <numRows;i++){
for(int j = 1;j < i;j++){
int a = list.get(i - 1).get(j - 1);
int b = list.get(i - 1).get(j);
list.get(i).set(j,a + b);
}
}
return list;
}
}
三种方法的代码与测试,结果截屏: