关注
排下序就可以了,用的是归并排序,完了才发觉可以用Sort排序的。。。
public class JR2 {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] arr = new int[n];
for(int i = 0; i < n; i++){
arr[i] = in.nextInt();
}
System.out.println(solution(arr));
}
public static int solution(int[] arr) {
mergeSort(arr, 0, arr.length - 1);
int count = 0;
int flag = 1;
for (int i = 0; i < arr.length - 1; i++) {
if (Math.abs(arr[i] - arr[i + 1]) <= 10) {
if (flag == 3) {
flag = 1;
} else {
flag += 1;
}
} else {
if (flag == 3) {
flag = 1;
} else {
count += 3 - flag;
flag = 1;
}
}
}
if (flag!=3){
count+=3-flag;
}
return count;
}
public static void merge(int[] arr, int low, int mid, int height) {
int i = low;
int j = mid + 1;
int k = 0;
int[] temp = new int[height - low + 1];
while (i <= mid && j <= height) {
if (arr[i] <= arr[j]) {
temp[k++] = arr[i++];
} else {
temp[k++] = arr[j++];
}
}
while (i <= mid) {
temp[k++] = arr[i++];
}
while (j <= height) {
temp[k++] = arr[j++];
}
for (int m = 0; m < temp.length; m++) {
arr[low + m] = temp[m];
}
}
public static void mergeSort(int[] arr, int low, int height) {
if (low < height) {
int mid = (low + height) / 2;
mergeSort(arr, low, mid);
mergeSort(arr, mid + 1, height);
merge(arr, low, mid, height);
}
}
}
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
04-16 04:21
广东培正学院 单片机 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我的实习收获 #
30323次浏览 500人参与
# 如果有时光机,你最想去到哪个年纪? #
47104次浏览 800人参与
# 实习吐槽大会 #
32213次浏览 155人参与
# 非技术岗简历怎么写 #
209746次浏览 2861人参与
# 晒一晒你的工位 #
85761次浏览 304人参与
# 26届秋招投递记录 #
3772次浏览 105人参与
# 2025牛客秋招季 #
4162次浏览 129人参与
# 双非能在秋招上岸吗? #
215169次浏览 1142人参与
# 被AI治愈的瞬间 #
52310次浏览 597人参与
# 怎么防止在试用期被辞退 #
122322次浏览 911人参与
# 我的租房踩坑经历 #
27675次浏览 280人参与
# 穿越回高考你还会选现在的专业吗 #
21684次浏览 266人参与
# 我和mentor的爱恨情仇 #
43618次浏览 278人参与
# 打工人的工作餐日常 #
40434次浏览 343人参与
# 软开人,说说你的烦心事 #
48074次浏览 359人参与
# 毕业旅行去哪玩儿 #
1241次浏览 33人参与
# 硬件/芯片公司工作体验 #
75191次浏览 664人参与
# 商战,最累的是我们 #
13056次浏览 52人参与
# 打工人锐评公司红黑榜 #
145967次浏览 920人参与
# 25届秋招公司红黑榜 #
262156次浏览 1094人参与