华为OD机试之乱序整数序列两数之和绝对值最小(Java源码)

news2025/2/23 6:49:12

乱序整数序列两数之和绝对值最小

题目描述

给定一个随机的整数(可能存在正整数和负整数)数组 nums,请你在该数组中找出两个数,其和的绝对值(|nums[x]+nums[y]|)为最小值,并返回这个两个数(按从小到大返回)以及绝对值。

每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

输入描述

一个通过空格分割的有序整数序列字符串,最多1000个整数,且整数数值范围是 [-65535, 65535]。

输出描述

两数之和绝对值最小值

用例

输入-1 -3 7 5 11 15
输出-3 5 2
说明因为 |nums[0] + nums[2]| = |-3 + 5| = 2 最小,所以返回 -3 5 2。

解析

  1. 使用for循环暴力组合破解
  2. 将数分组 正数一组,负数一组 分组后排序
    2.1. 若全正,则找最小的两个 若全负 则找最大的两个
    2.2. 若正负结合,则合并两个列表 使用双指针进行求解
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
//-1 -3 7 5 11 15
public class T57 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		List<Integer> positiveNums = new ArrayList<Integer>();
		List<Integer> negativeNums = new ArrayList<Integer>();
		Arrays.stream(sc.nextLine().split(" ")).forEach(item -> {
			int num = Integer.parseInt(item);
			if (num < 0) {
				negativeNums.add(num);
			} else {
				positiveNums.add(num);
			}
		});
		positiveNums.sort((a, b) -> a - b);// 升序
		negativeNums.sort((a, b) -> b - a);// 降序
		//System.out.println(positiveNums);
		//System.out.println(negativeNums);
		if(positiveNums.size()==0) {
			//纯负数
			System.out.println(negativeNums.get(1)+" "+negativeNums.get(0)+" "+Math.abs(negativeNums.get(1)+negativeNums.get(0)));
		}
		if(negativeNums.size()==0) {
			System.out.println(positiveNums.get(0)+" "+positiveNums.get(1)+" "+Math.abs(positiveNums.get(0)+positiveNums.get(1)));
		}
		if(negativeNums.size()>0&&positiveNums.size()>0) {
			//组合 就得组合了 说不定负数那边前两个 正数那边前两个 亦或者 一正一负
			int min=Integer.MAX_VALUE;
			int minNumber=negativeNums.get(negativeNums.size()-1);
			int maxNumber=positiveNums.get(positiveNums.size()-1);
			if(negativeNums.size()>=2&&negativeNums.get(0)+negativeNums.get(1)<min) {
				min=Math.abs(negativeNums.get(0)+negativeNums.get(1));
				minNumber=negativeNums.get(1);
				maxNumber=negativeNums.get(0);
			}
			if(positiveNums.size()>=2&&positiveNums.get(0)+positiveNums.get(1)<min) {
				min=Math.abs(positiveNums.get(0)+positiveNums.get(1));
				minNumber=positiveNums.get(0);
				maxNumber=positiveNums.get(1);
			}
			//双指针
			int left=0;
			int right=1;
			List<Integer> numsList=new ArrayList<Integer>();
			numsList.addAll(negativeNums);
			numsList.addAll(positiveNums);
			while(left<numsList.size()-1) {
				right=left+1;
				while(right<numsList.size()) {
					if(min>Math.abs(numsList.get(left)+numsList.get(right))) {
						min=Math.abs(numsList.get(left)+numsList.get(right));
						minNumber=numsList.get(left);
						maxNumber=numsList.get(right);
					}
					//System.out.println(numsList.get(left)+"-"+numsList.get(right)+"-");
					right++;
				}
				left++;
			}
			System.out.println(minNumber+" "+maxNumber+" "+ min);
		}
	}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/656306.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NXP IMX6ULL的官方文档、官方BSP、交叉编译工具链下载

目录 1 官网下载BSP以及相关文档 1.1 文档下载 1.2 NXP 官方uboot和kernel源码下载 1.3 官方评估板硬件资料下载 1.4 官方BSP下载 2 官网SDK下载 3 交叉编译工具链下载及安装 买了块IMX6ULL的开发板&#xff0c;然后移植uboot和kernel的时候&#xff0c;不想直接用开发板…

English Learning - L3 综合练习 7 TED-Living Beyond the Limits 2023.06.14 周三

English Learning - L3 综合练习 7 TED-Living Beyond the Limits 2023.06.14 周三 句 1扩展 go 句 2句 3句 4 - 6句 7-8句 9 - 10句 11扩展 detour 句 12 -13句 14扩展生词 句 15 -16句 17 -18扩展 patchwork 句 18句 19扩展生词 句 20句 21扩展生词 句 22句 23句 24句 25 -26…

国产麒麟配置规范

配置规范问题&#xff1a; 麒麟的加固 1.检查设备密码复杂度策略 /etc/pam.d/password-auth 添加/etc/pam.d/system-authpassword requisite pam_cracklib.so ucredit-1 lcredit-1 dcredit-1在password required pam_cracklib.so 后添加 minlen6 2.检查是否设置口令生存周…

103.实战网页行动呼吁部分-第三节

上节课我们实现的内容是这样的&#xff1a; ● 首先&#xff0c;我们设置一下label的字体样式 .cta-form label {display: block;font-size: 1.6rem;font-weight: 700;margin-bottom: 1.2rem; }● 接着设置输入框的样式 .cta-form input {width: 100%;padding: 1.2rem;font…

以产品为主导的增长揭开 Zipline 十亿美元估值的秘密

如今一提到物流&#xff0c;人们常常会将之定性为红海市场。然而&#xff0c;无人机配送服务的出现却预示着物流行业的变革。从2023年到2026年&#xff0c;全球包裹配送业务的价值预计将以每年53%的速度增长&#xff0c;到2026年底&#xff0c;其价值将超过60亿美元。在摩根斯坦…

CMU15-445 2022 Fall 通关记录 —— Project 1: Buffer Pool

指导书 Project #1 - Buffer Pool | CMU 15-445/645 :: Intro to Database Systems (Fall 2022) — 项目 #1 - 缓冲池 | CMU 15-445/645 :: 数据库系统简介&#xff08;2022 年秋季&#xff09; Task #1&#xff1a;Extendible Hash Table 首先应当了解 可扩展哈希表 的概念…

Anaconda jupyter lab安装及pandas2.x初体验

jupyter lab安装 之前写了一篇&#xff1a; Anaconda、Jupyter的安装部署及使用问题总结 最近又用python比较多&#xff0c;升级了一下本机的anaconda版本&#xff0c;并使用jupyter lab来编写python脚本&#xff0c;本文记录一下升级、使用过程。 安装anaconda 下载安装包 …

独家专访LAION创始人:高中生与科学家同酬,Discord上一呼百应

在LAION&#xff0c;大家都是无偿的。我们不像公司雇佣员工&#xff0c;所以我们不会付钱。一旦你开始付钱&#xff0c;就会有这样的讨论&#xff1a;高中生应该拿多少工资&#xff1f;谷歌的高级工程师应该拿多少工资&#xff1f; 我已经有足够的钱过上好日子了&#xff0c;现…

MongoDB聚合操作-02

一、聚合操作 聚合操作处理数据记录并返回计算结果。 聚合操作组值来自多个文档&#xff0c;可以对分组数据执行 各种操作以返回单个结果。 聚合操作包含三类&#xff1a;单一作用聚合、聚合管道、MapReduce。 单一作用聚合&#xff1a;提供了对常见聚合过程的简单访问&#…

马原第二章复习 1.实践和认识 80-109

实践 (一) 实践的本质 人类能动改造世界的客观物质活动 实践具有三个基本特征 客观实在性(体现在构成实践的诸多要素) 主观能动性(实践是一种有目的有计划的活动) 客观物质性 (二) 实践的基本结构 实践主体 实践客体 实践中介 辨析:实践客体不等于客观事物 客观事物只有…

市场份额被微软步步蚕食,Zoom已到生死存亡关头

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 Zoom (ZM)这几年一直在竞争加剧、视频会议市场增长放缓以及投资者对该公司的高期望下艰难挣扎。 虽然Zoom的股价已较高点时大幅下跌&#xff08;Zoom的股价已较2021年8月的高点暴跌了80%以上&#xff09;&#xff0c;但猛兽…

day57|动态规划17-最长回文子串问题

回文子串&#xff1a;强调连续 回文子序列&#xff1a;不强调连续 647. 回文子串的个数 暴力思路&#xff1a;三层for循环双指针思路&#xff1a;动态规划dp数组 dp[i][j]&#xff1a; 根据字符串的形式和所解决的问题确定dp数组的形式和含义。 递归公式&#xff08;分情况讨…

B046-cms01-后台搭建 界面修改 分页 GirdManager

目录 cms项目介绍Maven跳转到后台首页视图解析器页面和静态资源准备资源分布controller控制器 跳转到文章展示页面index.JSPArticleControllerarticle.jsp gridManager初体验和显示文章数据时间和是否启用显示Articlearticle.jsp 展示文章类型ArticleServiceImplarticle.jsp 按…

短视频seo源码部署--LINUX环境

抖音矩阵系统源码/抖音seo矩阵系统/抖音账号矩阵源码/短视频seo源码部署 *基于PHP语言&#xff0c;linux环境&#xff0c;MVC框架进行研发&#xff0c;开源部署 开源性质使得用户可以根据自己的需求对其进行二次开发和定制。然而&#xff0c;对于该软件的部署却是一项非常关键…

Python异步编程之web框架 异步vs同步 Redis并发对比

1|0测试基本信息 主题&#xff1a;比较异步框架和同步框架在RedisIO操作的性能差异python版本&#xff1a;python 3.8数据库&#xff1a;redis 5.0.7压测工具&#xff1a;locustweb框架&#xff1a;同步&#xff1a;flask 异步&#xff1a;starlette请求并发量: 模拟10个用户服…

ubuntu下,安装配置CUDA

一、下载文件。 到下面的官网链接&#xff0c;下载你自己需要的版本。我喜欢11.7 CUDA Toolkit Archive | NVIDIA Developer 二、安装 可能的错误&#xff1a; Failed to verify gcc version. --Linux安装CUDA GCC版本不兼容 sudo sh cuda_xxxxxxxxxxxxxx_linux.run --overr…

【vue+websocket】vue本地链接websocket正常,线上部署websocket 无法加载响应数据【已解决】

1.nginx配置&#xff0c;进行反向代理 location /链接websocket的名称 {proxy_pass http://localhost:websocket端口号/链接websocket的名称;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade"; }2.开放websoc…

Ansible源码学习(一)

一、背景说明 基于Ansible1.1源码学习 二、目录结构 ansible核心目录 ansible ├─bin # 入口命令 │ ├─ansible │ ├─ansible-doc │ ├─ansible-playbook │ ├─ansible-pull ├─lib # 核心代码 │ └─ansible │ ├─callback_plugins …

Netty核心技术六--Netty核心模块组件

1. Bootstrap、ServerBootstrap Bootstrap 意思是引导&#xff0c;一个 Netty 应用通常由一个Bootstrap 开始&#xff0c;主要作用是配置整个 Netty 程序&#xff0c;串联各个组件&#xff0c;Netty 中 Bootstrap 类是客户端程序的启动引导类&#xff0c;ServerBootstrap 是服…

【Linux】天天直接IO?我说停停,不如试试文件缓冲区

系列文章 收录于【Linux】文件系统 专栏 关于文件描述符与文件重定向的相关内容可以移步 文件描述符与重定向操作。 可以到 浅谈文件原理与操作 了解文件操作的系统接口。 目录 系列文章 揭秘C库文件结构体 文件缓冲区 为什么需要文件缓冲区 刷新机制 内核文件缓冲区…