OJ-0718

avatar
作者
猴君
阅读量:3

示例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<Integer> list = new ArrayList<>(num);         for (int i = 0; i < num; i++) {             list.add(in.nextInt());         }         while (list.size() >= 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<Integer> queue = new PriorityQueue<>((o1, o2) -> o2.compareTo(o1));         for (int i = 0; i < num; i++) {             queue.offer(in.nextInt());         }         while (queue.size() >= 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 < count; ++i) {             nums[i] = in.nextInt();         }           if (count == 0){             System.out.println(0);         }else if (count == 1){             System.out.println(nums[0]);         }else if (count == 2){             System.out.println(Math.max(nums[0], nums[1]));         } else {             System.out.println(get_result(nums));         }         return;     }          public static int get_result(int[] nums){          ArrayList<Integer> new_nums = new ArrayList<>();         for (int i = 0; i < nums.length; ++i) {             new_nums.add(nums[i]);         }         while(new_nums.size() >= 2){             Collections.sort(new_nums, Collections.reverseOrder());             ArrayList<Integer> nums2 = new ArrayList<>();             int[] nums3 = new int[3];             for (int i=0;i<3;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<Integer> temp = new ArrayList<>();             for (int i=0;i<nums2.size();i++){                 temp.add(nums2.get(i));             }             for (int i=3;i<new_nums.size();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);         }     } } 

https://blog.csdn.net/weixin_52908342/article/details/136448221

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!