网站设计工作内容,营销培训,怎么制作网站教程视频,提供wordpress空间#x1f387;#x1f389;#x1f389;#x1f389;点进来你就是我的人了 博主主页#xff1a;#x1f648;#x1f648;#x1f648;戳一戳#xff0c;欢迎大佬指点#xff01; 欢迎志同道合的朋友一起加油喔 #x1f4aa;#x1f4aa;#x1f4aa; 谢谢你这么帅… 点进来你就是我的人了 博主主页戳一戳欢迎大佬指点 欢迎志同道合的朋友一起加油喔 谢谢你这么帅气美丽还给我点赞比个心** 文章目录 一、面试题CVTE1. 题目描述2. 要求及解析3. 代码展示4. 注意点 二、杨辉三角1. 题目2. 画图解析3. 知识点4. 代码展示 三、简单的洗牌算法1. 理解怎么玩扑克牌2. 抽象出一张扑克牌3. 买牌4. 洗牌5. 发牌6. 测试类7. 对牌进行操作方法的完整代码 四、移除元素1. 示例 12. 示例 23. 求解代码 一、面试题CVTE
1. 题目描述
有两个字符串字符串1: welcome to cvte 字符串2: come结果 wl t vt2. 要求及解析
要求删除字符串1中所包含的字符串2中的字符
即删除字符串1中所有的c o m e 这四个字符3. 代码展示
package test;
import java.util.ArrayList;
import java.util.List;
public class Test {public static void main(String[] args) {ListCharacter arrayList new ArrayList();String str1 welcome to cvte;String str2 come;ListCharacter ret func(str1, str2);//利用 for - each 循环for (char ch : ret){System.out.print(ch);}System.out.println();}private static ListCharacter func(String str1, String str2) {ListCharacter list new ArrayList();//首先遍历 str1for (int i 0; i str1.length(); i) {//取出来str1中的每个字符char ch str1.charAt(i);//在 str2 中进行判断是否存在if (!str2.contains(ch )){list.add(ch);}}return list;}
}4. 注意点
以下两行代码有什么区别在使用上
ListCharacter arrayList new ArrayList();
//只能调用接口当中的方法ArrayListCharacter arrayList1 new ArrayList();
//可以调用当前类自己的方法和接口当中的方法二、杨辉三角
杨辉三角
1. 题目 2. 画图解析 3. 知识点 ListListInteger ret new ArrayList();//定义了一个二维数组4. 代码展示
class Solution {public ListListInteger generate(int numRows) {ListListInteger ret new ArrayList();//第一行 数组//在二维数组里面 第一行数组的下标为 0ListInteger list new ArrayList();list.add(1);//把第一行一维数组放到 二位数组的 0 下标ret.add(list);//处理其他行for (int i 1; i numRows; i) {//每循环一次 就是 一行//创建一个一维数组ListInteger curRow new ArrayList();curRow.add(1);//每一行的第一个元素//处理中间的数字//要获取上一行一维数组ListInteger prevRow ret.get(i - 1);//从第二列开始for (int j 1; j i; j) {int x prevRow.get(j) prevRow.get(j - 1);curRow.add(x);}//处理最后一个数字curRow.add(1);ret.add(curRow);}return ret;}
}三、简单的洗牌算法
1. 理解怎么玩扑克牌
买牌、洗牌发牌根据人数 2. 抽象出一张扑克牌
package demo;//抽象出来一张牌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 Card{
// suit suit \
// , num num
// };return suit num;}
}
3. 买牌
//定义扑克牌的4种花色 红桃梅花方块黑桃public static String[] suits {♥,♣,♦,♠};//首先需要买牌没有牌这怎么玩//买的牌放到哪里呢/*** 生成一副扑克牌* 52张 不包含大小王* 4种花色 每种花色 13 张* return*/public ListCard buyCard(){ListCard cardList new ArrayList();for (int i 0; i 4; i) {for (int j 1; j 13; j) {
// String suit suits[i];
// //实例化一张扑克牌
// Card card new Card(suit,j);
// cardList.add(card);cardList.add(new Card(suits[i],j));}}return cardList;}4. 洗牌 //洗牌 ---》》传一副扑克牌//洗牌需要什么呢 ---》》 扑克牌//扑克牌在哪放着呢 ----》》数组里面public void shuffle(ListCard cardList){//首先需要有随机数Random rand new Random();for (int i cardList.size() - 1; i 0 ; i--) {int index rand.nextInt(i);//在这里用 swap 方法进行交换swap(cardList,i,index);}}private static void swap(ListCard cardList,int i,int j) {//首次从数组里面获取i下标的牌//利用面向对象的方式去做Card tmp cardList.get(i);cardList.set(i,cardList.get(j));cardList.set(j,tmp);}5. 发牌
/*** 发牌* 3个人每个人轮流抓 5 张牌* 1.每个人拿到的牌放到哪里* 2.什么叫做 每个人轮流抓 5 张牌* param cardList*/public ListListCard getCard(ListCard cardList){ListListCard hand new ArrayList();//应该有 三个 一维数组三位玩家放各自的扑克牌ListCard hand1 new ArrayList();ListCard hand2 new ArrayList();ListCard hand3 new ArrayList();hand.add(hand1);hand.add(hand2);hand.add(hand3);//每个人抓5次//利用for循环for (int i 0; i 5; i) {//每一次有三个人for (int j 0; j 3; j) {//怎么揭牌???//相当于每次 拿 0下标的牌删除0下标的牌就行Card card cardList.remove(0);//放到对应人的手里hand.get(j).add(card);}}return hand;}6. 测试类
package demo;import java.util.List;public class Main {public static void main(String[] args) {CardGame cardGame new CardGame();ListCard ret cardGame.buyCard();System.out.println(买牌);System.out.println(ret);System.out.println(洗牌);cardGame.shuffle(ret);System.out.println(ret);System.out.println(发牌);ListListCard hand cardGame.getCard(ret);
// for (ListCard cards : hand){
// System.out.println(cards);
// }for (int i 0; i hand.size(); i) {System.out.println(第 (i 1) 个人的牌为);System.out.println(hand.get(i));}System.out.println(剩下的牌);System.out.println(ret);}
}
7. 对牌进行操作方法的完整代码
package demo;import java.util.ArrayList;
import java.util.List;
import java.util.Random;import static java.util.Collections.swap;public class CardGame {//定义扑克牌的4种花色 红桃梅花方块黑桃public static String[] suits {♥,♣,♦,♠};//首先需要买牌没有牌这怎么玩//买的牌放到哪里呢/*** 生成一副扑克牌* 52张 不包含大小王* 4种花色 每种花色 13 张* return*/public ListCard buyCard(){ListCard cardList new ArrayList();for (int i 0; i 4; i) {for (int j 1; j 13; j) {
// String suit suits[i];
// //实例化一张扑克牌
// Card card new Card(suit,j);
// cardList.add(card);cardList.add(new Card(suits[i],j));}}return cardList;}//洗牌 ---》》传一副扑克牌//洗牌需要什么呢 ---》》 扑克牌//扑克牌在哪放着呢 ----》》数组里面public void shuffle(ListCard cardList){//首先需要有随机数Random rand new Random();for (int i cardList.size() - 1; i 0 ; i--) {int index rand.nextInt(i);//在这里用 swap 方法进行交换swap(cardList,i,index);}}private static void swap(ListCard cardList,int i,int j) {//首次从数组里面获取i下标的牌//利用面向对象的方式去做Card tmp cardList.get(i);cardList.set(i,cardList.get(j));cardList.set(j,tmp);}/*** 发牌* 3个人每个人轮流抓 5 张牌* 1.每个人拿到的牌放到哪里* 2.什么叫做 每个人轮流抓 5 张牌* param cardList*/public ListListCard getCard(ListCard cardList){ListListCard hand new ArrayList();//应该有 三个 一维数组三位玩家放各自的扑克牌ListCard hand1 new ArrayList();ListCard hand2 new ArrayList();ListCard hand3 new ArrayList();hand.add(hand1);hand.add(hand2);hand.add(hand3);//每个人抓5次//利用for循环for (int i 0; i 5; i) {//每一次有三个人for (int j 0; j 3; j) {//怎么揭牌???//相当于每次 拿 0下标的牌删除0下标的牌就行Card card cardList.remove(0);//放到对应人的手里hand.get(j).add(card);}}return hand;}
}
四、移除元素 给你一个数组nums和一个值 val你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与val不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k要通过此题您需要执行以下操作 更改 nums 数组使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。 返回k。 用户评测 评测机将使用以下代码测试您的解决方案 int[] nums […]; // 输入数组 int val …; // 要移除的值 int[] expectedNums […]; // 长度正确的预期答案。 // 它以不等于 val 的值排序。 int k removeElement(nums, val); // 调用你的实现 assert k expectedNums.length; sort(nums, 0, k); // 排序 nums 的前 k 个元素 for (int i 0; i actualLength; i) { assert nums[i] expectedNums[i]; } 如果所有的断言都通过你的解决方案将会 通过。 1. 示例 1 输入nums [3,2,2,3], val 3 输出2, nums [2,2, _ , _ ] 解释你的函数函数应该返回 k 2, 并且 nums 中的前两个元素均为 2。 你在返回的 k 个元素之外留下了什么并不重要因此它们并不计入评测。 2. 示例 2 输入nums [0,1,2,2,3,0,4,2], val 2 输出5, nums [0,1,4,0,3, _ , _ , _ ] 解释你的函数应该返回 k 5并且 nums 中的前五个元素为 0,0,1,3,4。 注意这五个元素可以任意顺序返回。 你在返回的 k 个元素之外留下了什么并不重要因此它们并不计入评测。 提示 0 nums.length 100 0 nums[i] 50 0 val 100 3. 求解代码
class Solution {public int removeElement(int[] nums, int val) {//利用双指针int n nums.length;int left 0;for (int right 0; right n; right) {if (nums[right] ! val){nums[left] nums[right];left;}}return left;}
}