活动地址:CSDN21天学习挑战赛
1、凡事不必苛求,来了就来了;凡事不必计较,过了就过了;遇事不要皱眉,笑了就笑了;结果不要强求,做了就对了。
…
创作计划
**
1,机缘
A,工作中遇到了瓶颈
B,技术方面得到提升
C,金钱方面得到改善
…
2,收获
A,根据活动的模板整理内容有条理,有思路
B,在行为上约束自己
C,很多志同道合的领域同行
D,之前下班回家,只是去刷抖音,玩物丧志。现在会想着去打卡
…
3,日常
- 一步一个脚印,先迈出脚再说
- 是人都会累,看你想要怎样的人生,我只是不想年迈之后叹息前半生。
. …
4,憧憬
技术能跟上时代、工资 😊😊😊
**
学习计划
**
1,学习目标
解决 【华为OD机试真题 JAVA】猜密码
2,学习内容
题目内容:
小杨申请了一个保密柜,但是他忘记了密码。只记得密码都是数字,而且所有数字都是不重复的。请你根据他记住的数字范围和密码的最小数字数量,帮他算下有哪些可能的组合,规则如下:1、输出的组合都是从可选的数字范围中选取的,且不能重复;2、输出的密码数字要按照从小到大的顺序排列,密码组合需要按照字母顺序,从小到大的顺序排序。3、输出的每一个组合的数字的数量要大于等于密码最小数字数量;4、如果可能的组合为空,则返回“None…"
输入要求:
1、输入的第一行是可能的密码数字列表,数字间以半角逗号分隔
2、输入的第二行是密码最小数字数量
输出要求:
1、可能的密码组合,每种组合显示成一行,每个组合内部的数字以半角逗号分隔,从小到大的顺序排列。
2、输出的组合间需要按照字典序排序。
3、2,3,4放到2,4的前面
示例
输入 2,3,4
2
输出
2,3
2,3,4
2,4
3,4
示例
输入 2,0
1
输出
0
0,2
2
3,学习时间
下班后
4,学习产出
根据提示完成这道题
**
学习日记
**
1,学习知识点
题目的难点在于 长度为m的数组中取出n个数
2,学习遇到的问题
递归看的人麻了
3,学习的收获
理解了这道题的递归调用
4,实操
public static void main(String[] args) {
// int input[] = {2, 3, 4, 5, 6, 7, 8, 9, 10};
int input[] = {2, 3, 4};
int minNum = 2;
// 转为list
List<Integer> tempList = new ArrayList<>();
for (int i : input) {
tempList.add(i);
}
// 对list降序排序
Collections.sort(tempList);
LinkedList<Integer> resultList = new LinkedList<>();
if (minNum > input.length)
System.out.print("None");
else {
dfs(tempList, resultList, 0, minNum);
}
}
/**
* 数组 M 中取出长度大于 N 的数组
*
* @param tempList 原始数组
* @param res 用于递归的数组
* @param i 记录递归数组的index
* @param minNum 最小长度
*/
public static void dfs(List<Integer> tempList, List<Integer> res, int i, int minNum) {
if (res.size() >= minNum) {
for (int a : res) {
if (a != res.get(res.size() - 1)) {
System.out.print(a + ",");
} else {
System.out.println(a);
}
}
}
for (int j = 0; j < tempList.size(); j++) {
if (res.size() == 0 || tempList.get(j) > res.get(res.size() - 1)) {
// 将开始的数据放入放入list
res.add(tempList.get(j));
dfs(tempList, res, j + 1, minNum);
// 当前数据遍历完成,删除
res.remove(res.size() - 1);
}
}
}
…