9.21今日头条两道笔试有全AC代码么?求代码?

如题,我两道都AC 30%,菜的抠脚。。。
全部评论
排下序就可以了,用的是归并排序,完了才发觉可以用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); } } }
点赞 回复 分享
发布于 2016-09-21 21:20

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务