OJ-0718
示例1
(图片来源网络,侵删)
input 3 1 1 1 output 0
示例2
input 3 3 7 10 output 1
示例3
input 4 3 7 10 16 output 3
题解1:List
{ public static void main(String[] args) { Scanner in = new Scanner(System.in); int num = in.nextInt(); List list = new ArrayList(num); for (int i = 0; i = 3) { list.sort((o1, o2) -> o2.compareTo(o1)); int x = list.remove(0); int y = list.remove(0); int z = list.remove(0); int remain = 0; if (x == y && y != z) { remain = y - z; } if (x != y && y == z) { remain = x - y; } if (x != y && y != z) { remain = Math.abs((x - y) - (y - z)); } if (remain > 0) { list.add(remain); } } int res; if (list.size() == 2) { res = Math.max(list.get(0), list.get(1)); } else if (list.size() == 1) { res = list.get(0); } else { res = 0; } System.out.println(res); } }
题解2:优先队列
public static void main(String[] args) { Scanner in = new Scanner(System.in); int num = in.nextInt(); PriorityQueue queue = new PriorityQueue((o1, o2) -> o2.compareTo(o1)); for (int i = 0; i = 3) { int x = queue.poll(); int y = queue.poll(); int z = queue.poll(); int remain = 0; if (x == y && y != z) { remain = y - z; } if (x != y && y == z) { remain = x - y; } if (x != y && y != z) { remain = Math.abs((x - y) - (y - z)); } if (remain > 0) { queue.offer(remain); } } int res; if (queue.size() == 2 || queue.size() == 1) { res = queue.poll(); } else { res = 0; } System.out.println(res); }
参考
import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int count = in.nextInt(); int[] nums = new int[count]; for (int i = 0; i = 2){ Collections.sort(new_nums, Collections.reverseOrder()); ArrayList nums2 = new ArrayList(); int[] nums3 = new int[3]; for (int i=0;i nums3[i] = nums[i]; } if (nums3[0] == nums3[1] && nums3[1] != nums3[2]){ nums2.add(Math.abs(nums3[2] - nums3[0])); } else if (nums3[0] != nums3[1] && nums3[1] == nums3[2]){ nums2.add(Math.abs(nums3[1] - nums3[0])); } else if (nums3[0] != nums3[1] && nums3[1] != nums3[2]){ nums2.add(Math.abs(Math.abs(nums3[2] - nums3[1]) - Math.abs(nums3[1] - nums3[0]))); } ArrayList temp.add(nums2.get(i)); } for (int i=3;i temp.add(new_nums.get(i)); } new_nums = temp; } if (new_nums.size() == 0){ return 0; } else if (new_nums.size() == 2){ return Math.max(new_nums.get(0) , new_nums.get(1)); } else { return new_nums.get(0); } } }
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。