携程笔试第二题
昨晚的笔试,第二题只过了40%,看了其他人好像是注释中的写法,问问这两种有什么区别呢,我试了好久结果都一样
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
int n = in.nextInt();
int m = in.nextInt();
int k = in.nextInt();
int[] arr = new int[n];
for(int i = 0; i < n; i++){
arr[i] = in.nextInt();
}
Arrays.sort(arr);
int count = 0;
for(int i = 0; i < n; i++){
for(int j = 1; j < m; j++){
if(i + j >= n || arr[i + j] > arr[i] + k){
count++;
break;
}
}
}
/*int count = n;
for(int i = 0; i < n; i++){
int next = i + m - 1;
if(next >= n) break;
if(arr[next] - arr[i] <= k){
count--;
}
}*/
System.out.println(count);
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
int n = in.nextInt();
int m = in.nextInt();
int k = in.nextInt();
int[] arr = new int[n];
for(int i = 0; i < n; i++){
arr[i] = in.nextInt();
}
Arrays.sort(arr);
int count = 0;
for(int i = 0; i < n; i++){
for(int j = 1; j < m; j++){
if(i + j >= n || arr[i + j] > arr[i] + k){
count++;
break;
}
}
}
/*int count = n;
for(int i = 0; i < n; i++){
int next = i + m - 1;
if(next >= n) break;
if(arr[next] - arr[i] <= k){
count--;
}
}*/
System.out.println(count);
全部评论
区别就是没注释的会超时
相关推荐
昨天 19:00
山西大学 测试工程师 点赞 评论 收藏
分享
05-07 17:26
福建农林大学 Java 点赞 评论 收藏
分享



点赞 评论 收藏
分享