当前位置: 首页 > news >正文

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<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

http://www.lryc.cn/news/402627.html

相关文章:

  • python抓包 -- 用wireshark抓包、解析--scapy、PyShark
  • uni-app开发日志:unicloud使用时遇到的问题解决汇总(不断补充)
  • 插入排序算法详解
  • parallel 详细解析 Java 8 Stream API 中的 parallel 方法
  • 不同业务场景下通过mars3d实现绕点旋转效果
  • 重塑水利未来:智慧水利解决方案的探索与实践,从物联网、大数据到人工智能,科技如何赋能水利行业,实现智慧化管理与决策
  • IO、进程、线程03
  • 算法力扣刷题记录 五十二【617.合并二叉树】
  • Java中的ArrayList和LinkedList有什么区别?
  • Linux C++ 058-设计模式之解释器模式
  • MDK5没有DeviceName
  • 在LabVIEW中实现图像矫正
  • Apache httpd-vhosts.conf 配置详解(附Demo)
  • 活动回顾 | AutoMQ 联合 GreptimeDB 共同探讨新能源汽车数据基础设施
  • 格式工厂转换视频分辨率
  • ReAct 大模型提示框架
  • JavaEE:Lombok工具包的使用以及EditStarter插件的安装
  • 基于纹理和统计图像特征集成的计算机辅助乳腺癌检测
  • Java基础 - 简介和配置环境变量
  • 水域救援装备的详细简介_鼎跃安全
  • 二、BIO、NIO、直接内存与零拷贝
  • 生成式AI的发展方向:Chat vs Agent
  • 吴恩达深度学习笔记:机器学习策略(2)(ML Strategy (2)) 2.9-2.10
  • 变频空调介绍
  • C语言实现二叉树以及二叉树的详细介绍
  • VScode:前端项目中yarn包的安装和使用
  • cmake configure_package_config_file指令详解
  • 准备跳槽了(仍然底层为主,ue独立游戏为辅)
  • 汽车免拆诊断案例 | 卡罗拉急加速抖动故障排除
  • 【JAVA】深入理解Hutool中的Pair、Triple和Tuple:组合数据的新方式,方法返回多个值,嘎嘎香,谁用谁知道,比原生好用更强大