绝对值最小

找出有序数组中绝对值最小的元素 给定一个有序整数序列(非递减序),可能包含负数,找出其中绝对值最小的元素,比如给定序列 -5, -3, -1, 2, 8 则返回-1。 阅读详情
题目描述:


给你一个数组A[n],请你计算出ans=min(|A[i]+A[j]|)(0<=i,j<n). 例如:A={1, 4, -3}, 则: |A[0] + A[0]| = |1 + 1| = 2. |A[0] + A[1]| = |1 + 4| = 5. |A[0] + A[2]| = |1 + (-3)| = 2. |A[1] + A[1]| = |4 + 4| = 8. |A[1] + A[2]| = |4 + (-3)| = 1. |A[2] + A[2]| = |(-3) + (-3)| = 6. 所以ans=1. 输入描述: 有多组测数数据,每组数据有两行,第一行包含一个正整数n(0<n<=100000),第二行包含n个整数,分别表示A[0],A[1],A[2],....,A[n-1],(|A[i]|<2^30)。 输入以文件结束。 输出描述: 对于每组数据,输出相应的答案。

解题思想:

  1. 首先将数组A进行排序(C语言可以使用qsort排序,效率很高),本人是采用非降序排序的。(其中i=0,j=n-1.)
  2. 然后分别从数组的头和尾进行对数组扫描,即前指针i和后指针j(这里的i、j时表示数组的下标)。在每次的A[i]和A[j]中都求其绝对值,即temp=|A[i]+A[j]|,然后和目前最小值min进行比较,即min=min<temp?min:temp;
  3. 接着,比较|A[i]|和|A[J]|的大小,如果A[i]>A[j],那么i++;否则j--;
  4. 最后求出来的就是所求结果。

本代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int arr[100000];
int cmp(const void *a,const void *b)
{
	int *c=(int *)a;
	int *d=(int *)b;
	if(*c!=*d)  return *c-*d;
}
int main()
{
    int n,min,i,j,temp;
    while(scanf("%d",&n)!=EOF)
    {
        min=2100000000;
        for(i=0;i<n;i++)
        {
            scanf("%d",&arr[i]);
        }
        qsort(arr,n,sizeof(int),cmp);
        for(i=0,j=n-1;i<n && j>=0;)
        {
            temp=abs(arr[i]+arr[j]);
            if(temp<min) min=temp;
            if(abs(arr[i])>abs(arr[j]))
            {
            	i++;
            }
            else
            {
            	j--;
            }
        }
        printf("%d\n",min);
    }
    return 0;
} 


配出最小绝对值 注意!答案仅作为参考(实际考试中下列代码通过用例100%,但不代表最优解) 给定一个随机的整数数组(可能存在正整数和负整数)nums, 请你在该数组中找出两个数,其和的绝对值(|nums[x]+nums[y]|)为最小值 并返回这两个数(按从小到大返回)以及绝对值。 每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 输入描述: 一个通过空格空格分割的有序整数序列字符串,最多1000个整数, 且整数数值范围是[-65535,65535] 输出描述: 两个数和两数之和绝对值 示例一: 输入 -1 阅读详情

相关推荐

ArcGIS标注(二分式、三分式、条件分类标注、上下标、牵引线、文字格式化…)

ArcGIS中的各种标注方法、可能遇到的问题和细节。

m0_73306837的博客 5275

绝对值最小的数

  输入 10个数,找出其中绝对值最小的数,将它和最后一个数交换。 输入格式 输入一行包括 10 个绝对值不超过 10001000 的整数。 输出格式 输出 10 个交换后的整数,答案输出在一行。 样例输入 10 2 30 40 50 60 70 80 90 100 样例输出 10 100 30 40 50 60 70 80 90 2   #include &lt;cm...

第一楼主的博客 3123

GB28181安防平台未授权访问漏洞:原理、复现与修复指南

未授权访问漏洞是Web安全中常见的访问控制缺陷,其本质在于应用在提供对敏感功能或数据的访问前,未能对请求者的身份和权限进行充分验证。从技术原理上看,这类漏洞常源于拦截器配置错误、安全注解遗漏或自定义校验逻辑缺陷,导致本应受保护的API接口被意外暴露。在工程实践中,此类漏洞危害巨大,攻击者无需登录即可直接访问系统核心接口,可能引发敏感信息泄露、权限提升甚至系统接管。尤其在安防监控、物联网管理平台等场景中,一旦涉及用户管理接口(如`/api/user/**`),风险会急剧放大。本文以GB28181视频监控管理平

weixin_30271335的博客 440

优快云编程挑战:绝对值最小--Java实现

给你一个数组A[n],请你计算出ans=min(|A[i]+A[j]|)(0<=i,j<n). 例如:A={1, 4, -3},则结果为2.

生命在于折腾 3333

告别CMake依赖!在Visual Studio 2022中直接配置VTK 9.4开发环境(附完整项目示例)

本文详细介绍了如何在Visual Studio 2022中直接配置VTK 9.4开发环境,无需依赖CMake。通过图文教程和完整项目示例,帮助C++开发者快速集成VTK库,简化开发流程,提升工作效率。特别适合科学可视化任务的开发者。

weixin_26804345的博客 416

GD32F303串口DMA发送数据避坑指南:为什么你的发送函数会卡住?

本文深入解析GD32F303单片机串口DMA发送数据时常见的卡死问题,提供详细的避坑指南。从DMA传输完成中断时序、发送状态管理到双通道DMA的特别注意事项,全面剖析问题根源并给出解决方案,帮助开发者构建健壮的DMA发送机制。

weixin_27038245的博客 295

求数组中两两之差绝对值最小的值

一、问题描述        有一个整数数组,请求出两两之差绝对值最小的值,记住,只要得出最小值即可,不需要求出是哪两个数。(下述的所有解法中,依旧没有实现在O(n)时间内求解的,如果有好方法,求赐教!!!) 二、解题思路        方法一:暴力做差,求最小值。时间复杂度O(n^2)。        方法二:排序做差,求相邻最小值。时间复杂度O(nlgn)。        方法三:设这...

菜鸟哆哆的专栏 2万+

YOLOv8缺陷检测可视化界面实战:PyQt5布局设计与代码实现

本文详细介绍了如何利用PyQt5为YOLOv8缺陷检测模型构建一个专业、易用的可视化界面。通过实战讲解PyQt5的布局管理器设计、信号槽机制与YOLOv8核心的集成,帮助开发者快速将AI模型部署为直观的桌面应用,提升工业质检等场景的落地效率。

redis7keeper的博客 758

求绝对值最小的数

有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。算法实现的基本思路找到负数和正数的分界点,如果正好是0就是它了,如果是正数,再和左面相邻的负数绝对值比较,如果是负数,取取绝对值与右面正数比较。还要考虑数组只

张勤一 2068

红外回充方案之红外接收和发射/附源码(1)

本文介绍了基于NEC协议的红外回充方案实现,重点讲解了红外收发原理和GD32F330单片机的接收端实现。文章首先说明采用38kHz载波和一体化红外接收管的设计优势,能有效抗环境光干扰。接着详细解析NEC协议格式,包括9ms起始信号、地址码、命令码及其反码校验机制,并给出逻辑1和0的调制方式。在接收端实现上,展示了GD32F330定时器输入捕获配置代码,通过双边沿触发测量脉冲宽度进行解码。文章还提供了状态机设计思路和数据结构,为低成本机器人红外回充方案提供了完整的技术实现方案。

m0_59406757的博客 1241

傅里叶变换实战:用Python手把手教你分析音频频谱(附完整代码)

本文详细介绍了如何使用Python实现傅里叶变换进行音频频谱分析,涵盖音频加载、预处理、FFT应用、频谱可视化及特征提取等关键步骤。通过实战案例和完整代码,帮助开发者掌握数字信号处理技术,特别适合音频分析和音乐信息检索领域的应用。

weixin_29090677的博客 150

最小绝对值

找出数组中绝对值最小的数,将它和最后一个数交换,然后输出这个数组(长度为10) 解题思路: 1.输入10个数字; 2.用fabs()函数搜索绝对值最小的数字;再用if语句判断出最小值后保存此时的i的值; 3.用类似于冒泡排序法的方法进行赋值:将最后一位的值赋给最小值在的位置,同时将这个最小值赋给最后一位 注意事项: 1.数组的长度为10,但实际计数是从0开始的,因此长度为10的数组表示为:n[0]~n[9]; 代码实现: 运行结果: 其实在编写这个程序时,一开始将数组的所有元素都进行了取绝对值,再逐步比

zkn985632的博客 760

【人脸识别】基于 Gabor+SVM和PCA+SVM实现人脸识别matlab源码含 GUI

1 简介 随着经济的快速发展,互联网的普及,信息安全逐渐被人们所重视。人脸识别技术作为保护信息安全的重要手段之一,也逐渐被研究学者所重视。人脸识别作为计算机视觉技术和生物特征识别技术的一个重要分支,模式识别与人工智能的一个重要领域,其主要任务是对静态图像或动态视频进行识别。如何快速的正确的对人脸进行识别是目前人脸识别课题的一个难题。人脸识别算法的选取直接关系到人脸识别的识别率。 本文首先介绍了国内外人脸识别的发展现状,并对人脸图像预处理方法进行了详细阐述。图像预处理的方法有很多,主要包括:灰度变换、图像锐

qq_59747472的博客 1137

两数之和绝对值最小

标题:两数之和绝对值最小 | 时间限制:1秒 | 内存限制:32768K | 语言限制:不限 给定一个从小到大的有序整数序列(存在正整数和负整数)数组 nums ,请你在该数组中找出两个数,其和的绝对值(|nums[x]+nums[y]|)为最小值,并返回这个绝对值。 每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 输入描述: 一个通过空格分割的有序整数序列字符串,最多1000个整数,且整数数值范围是 -65535~65535。 输出描述: 两数之和绝对值最小值 示例1 输入:

m0_52116815的博客 1848

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

优快云挑战绝对值最小

绝对值最小 题目详情: 给你一个数组A[n],请你计算出ans=min(|A[i]+A[j]|)(0 例如:A={1, 4, -3}, 则: |A[0] + A[0]| = |1 + 1| = 2. |A[0] + A[1]| = |1 + 4| = 5. |A[0] + A[2]| = |1 + (-3)| = 2. |A[1] + A[1]| = |4 + 4| = 8

机器笨猫 972

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

如何求数组中绝对值最小的数?

""" 有一个升序排列的数组,数组中可能有正数,负数或0,求数组中元素的绝对值最小的数。例如,数组【-10,-5,-2,7,15,50】,该数组中绝对值最小的数是2 """ def fingMin1(array): if array == None or len(array) &lt; 0: print("输入参数不合理") return 0 ...

Chang_Shuang的博客 2107

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

数组:求绝对值最小的数

问题描述: 有一个升序排列的数组,数组中可能有正数,负数,0,求数组中元素的绝对值最小的数。 分析: 分三种情况: 1)如果数组第一个元素为非负数,那么绝对值最小的数肯定为数组的第一个元素。 2)如果数组的最后一个元素为负数,那么绝对值最小的数肯定为数组的最后一个元素。 3)数组中既有正数又有负数时,首先找到正数与负数的分界点,如果分界点恰好为0,那么0就是绝对值最小的数。否则比较分级...

weixin_38108266的博客 2238

连续子段绝对值最小问题

【座右铭】1. 想要成为行家,就必须尝试解决大量的问题;                     2. 解决大量问题并不代表能解决所有问题,而是表示解决下一个问题的几率变大了 1. 现有一个数组,里面包含了正数和负数,取其中若干个连续的数,要求这些数的和的绝对值最小【问题来源于论坛】 第一部分:思路 1. 对数组A[1...N],做和运算S[1...N],其中S[1] =

JulianXiong的专栏 2973

求数组两两之差绝对值最小的值

一 题目描述:   有一个整数数组,请求出两两之差绝对值最小的值,只要求出最小值即可,不要求求出是哪两个数。   二 常规思路:   求解此题的寻常思路是什么?观察题目我注意到后面强调不要求求出两个数,那么最最简单的O(n^2)的 算法显然做了很多无用功。嗯,好,既然这个办法不行想想其他的。对于数组也就是序列之类的题,有一种很 常用的思路那就是预处理。这道题目貌似

xxyseu的专栏 2777

绝对值最小的和

Description 给出一串由 N 个整数组成的数列 a1, a2, a3, …, aN,求问数列中哪两个不同元素的和的绝对值最小。 Input 输入共一组数据,共2行 第一行一个数字 N ,表示数列中元素的个数 第二行共 N 个数字,两两之间用空格分开,表示a1, a2, a3, …, aN 输入保证 2 ≤ N ≤ 1 × 103,  − 1 × 108 ≤ ai ≤ 1 × 108 Output 输出共1行,两个用空格隔开的数字 i 和 j ,表示 ai + aj 的绝对值最小。 若两对元素的之.

半濠春水的博客 1117
上一篇: SQL通用版分页存储过程
下一篇: F(X)
wingahi
博客等级 码龄15年 15粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值