2025 小米 笔试编程第一题
2025届春招笔试题1-软件开发方向 编程第一题
```
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
/**
* @author Hertz
* @date 2025.3.12
* */
public class Main {
public static void main(String[] args) {
//接收操作
int ans=0;
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int k=sc.nextInt();
k=k-n;//记录除去好日子剩下的天数
ans=n*2;
int []date=new int[n];
for(int i=0;i<n;i++){
date[i]=sc.nextInt();
}
//记录好日子之间相隔的天数
List<Integer> list=new ArrayList<>();
for(int i=1;i<n;i++){
list.add(date[i]-date[i-1]-1);
}
list.sort(new Comparator<Integer>() { //对记录进行由小到大的排列
@Override
public int compare(Integer o1, Integer o2) {
return o1-o2;
}
});
int j=0;
//判断剩下天数是否足以度过相隔的天数
while(j<list.size()&&k>=list.get(j)){
k-=list.get(j);
j++;
ans-=2;
}
System.out.println(ans);
}
}
```
纯蒻苟,大佬勿喷
#小米##春招##小米笔试#
```
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
/**
* @author Hertz
* @date 2025.3.12
* */
public class Main {
public static void main(String[] args) {
//接收操作
int ans=0;
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int k=sc.nextInt();
k=k-n;//记录除去好日子剩下的天数
ans=n*2;
int []date=new int[n];
for(int i=0;i<n;i++){
date[i]=sc.nextInt();
}
//记录好日子之间相隔的天数
List<Integer> list=new ArrayList<>();
for(int i=1;i<n;i++){
list.add(date[i]-date[i-1]-1);
}
list.sort(new Comparator<Integer>() { //对记录进行由小到大的排列
@Override
public int compare(Integer o1, Integer o2) {
return o1-o2;
}
});
int j=0;
//判断剩下天数是否足以度过相隔的天数
while(j<list.size()&&k>=list.get(j)){
k-=list.get(j);
j++;
ans-=2;
}
System.out.println(ans);
}
}
```
纯蒻苟,大佬勿喷
#小米##春招##小米笔试#
全部评论
大佬厉害,我看不懂题目,还以为是每次登山不能在峰上超过k天,连个示例解释都没有。
感觉第一题是个二分答案,动态规划过了45%
第一题自己太sb了,对list排序写成了reverse,搞到最后都没发现哪里出问题了
佬,这个第一题你a了?
相关推荐