关注
排下序就可以了,用的是归并排序,完了才发觉可以用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
相关推荐
牛客热帖
更多
正在热议
更多
# 我的2024牛客高光时刻 #
102331次浏览 1554人参与
# 一人推荐一个机械人值得去的公司 #
379368次浏览 4092人参与
# 被同事甩锅了怎么办 #
16286次浏览 91人参与
# 贝壳求职进展汇总 #
13621次浏览 100人参与
# 京东求职进展汇总 #
588019次浏览 5077人参与
# bilibili求职进展汇总 #
40041次浏览 425人参与
# 我是XXX,请攻击我最薄弱的地方 #
7620次浏览 78人参与
# 提前批的机械人,你们都有面试了吗 #
85560次浏览 926人参与
# 找不到实习会影响秋招吗 #
1139597次浏览 12404人参与
# 机械人与华为的爱恨情仇 #
93387次浏览 840人参与
# 国央企薪资爆料 #
64871次浏览 490人参与
# 入职第三天,晒晒你的工位 #
20980次浏览 115人参与
# 你最希望上岸的公司是? #
95532次浏览 524人参与
# 牛客租房专区 #
26913次浏览 445人参与
# 找工作中的意难平 #
518386次浏览 5328人参与
# 金融财经春招备战日记 #
4248次浏览 38人参与
# 美的求职进展汇总 #
222246次浏览 1655人参与
# 你是如何准备春招的? #
15706次浏览 127人参与
# 你的房租占工资的比例是多少? #
17331次浏览 217人参与
# 那些拿到大厂offer的简历长啥样 #
190705次浏览 2977人参与