题目描述
给定一个递增数组,求其中绝对值最小的那个数。
如给定数组为:-8, -5, -2, 3, 5, 7,则返回-2

思路
因为数组是递增序列,所以求绝对值最小的数只可能是位于正负边界的两个数之一,因此对于数组中同时存在正数和负数的情况,可以采用类似二分查找的方法,如果low和mid同号,那么那个绝对值最小的数一定在右侧,将low的值改为mid;如果low和high同号,那么绝对值最小的数一定在左侧,将high改为mid,也就是说,对于数组中有正有负的,一定是往趋向于零的方向找,最后low和high连续时,只要比较这两个数的绝对值就行了。最后,若数组都是正数或者都是负数时,可以直接取到绝对值最小的数。

代码


public static void main(String[] args) {int[] a = {-8, -5, -2, 3, 5, 7};System.out.println(absMin(a, 6)); //运行输出-2
}public static int absMin(int[] a, int size) {if(size == 1)return a[0];//考虑数组都是正数或者都是负数的情况if(a[0] * a[size-1] >= 0)return (a[0] >= 0) ? a[0] : a[size-1];else{int low = 0, high = size-1, mid = 0;while(low < high){//当两个数临近时,直接取绝对值小的那个数if(low + 1 == high)return Math.abs(a[low]) < Math.abs(a[high]) ? a[low] : a[high];mid = low + (high - low) / 2;//左边同号时(必然都是负数(或者一个零),往右边找)if(a[low] * a[mid] >= 0)low = mid;//右边同号时(必然都是正数(或者一个零),往左边找)if(a[high] * a[mid] >= 0)high = mid;}return a[mid];}
}

【每日一题】递增序列中绝对值最小的数相关推荐

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

    """ 有一个升序排列的数组,数组中可能有正数,负数或0,求数组中元素的绝对值最小的数.例如,数组[-10,-5,-2,7,15,50],该数组中绝对值最小的数是2 &q ...

  2. 找出有序数组中绝对值最小的数

    假设数组是从小到大排序,数值可能为负数.0.正数. 思路一 可以一次性遍历一遍,找出绝对值最小值,此时时间复杂度为O(N),缺点是没有利用数组是有序的这一特点. int getMinAbs(int[] ...

  3. 面试题: 求绝对值最小的数

    题目: 有⼀个已经排好序的整数序列(升序,⽆重复项),序列中可能有正整数.负整数或者0,请 ⽤你认为最优的⽅法求序列中绝对值最⼩的数.**_要求不能使⽤顺序⽐较的⽅法(时间复杂 度需要⼩于 O(n) ...

  4. python内置函数用来返回序列中的最小元素_1000道Python题库系列分享二(48道)

    1.10 pip list 1.11 对 1.12 错 1.13 错 1.14 错 1.15 对 1.16 错 1.17 对 本期题目: 2.1 表达式int('11111', 2)的值为______ ...

  5. Python---寻找给定序列中相差最小的两个数字

    编写函数,寻找给定序列中相差最小的两个数字 def getTwoClosestElements(arr):#先进行排序,使得相邻元素最接近#相差最小的元素必然相邻seq = sorted(arr)#先 ...

  6. python中表达式4**0.5的值为_Python内置函数__用来返回序列中的最小元素

    [填空题]表达式 int(4**0.5) 的值为 [判断题]3+4j不是合法的Python表达式. [填空题]已知列表对象x = ['11', '2', '3'],则表达式 max(x) 的值为 [填 ...

  7. python内置函数可以返回序列中的最大元素_Python内置函数__用来返回序列中的最小元素...

    [判断题]不可以在同一台计算机上安装多个Python版本. [判断题]Python是一种跨平台.开源.免费的高级动态编程语言. [填空题]假设列表对象aList的值为[3, 4, 5, 6, 7, 9 ...

  8. 每日一题——反转字符串中的单词

    每日一题 反转字符串中的单词 题目链接 思路(进阶) 我们首先不考虑太多限制因素,先看如何实现字符串中单词的反转 举个例子:我们要反转字符串"the sky is blue"中的单 ...

  9. Java学习手册:(数据结构与算法-数组)如何求绝对值最小的数?

    问题: 有一个升序排列的数组,数组中可能有正数.负数或0,求数组中元素的绝对值最小的数,例如,数组{-10,-5,-2,7,15,50},绝对值最小的是2. 方法一: 对于升序数组,求绝对值最小的数可 ...

  10. JSK-399 绝对值最小的数【大数】

    绝对值最小的数 输入 10 个数,找出其中绝对值最小的数,将它和最后一个数交换. 输入格式 输入一行包括 10 个绝对值不超过 1000 的整数. 输出格式 输出 10 个交换后的整数,答案输出在一行 ...

最新文章

  1. mysql中如何设置过滤器_mysql – 使用计数器实现过滤器
  2. jquery-1 jquery几个小实例
  3. Bootstrap学习笔记-布局
  4. 初等数论--同余方程--同余方程运算:模逆运算,模指数运算
  5. NS3可视化问题及解决办法
  6. 深入剖析:Super Jumping! Jumping! Jumping! (动规)
  7. mysql多张表join_mysql 连接查询(多表查询)+子查询-初学教程 3【重点】
  8. 内存分布malloc/calloc/realloc/free/new/delete、内存泄露、String模板、浅拷贝与深拷贝以及模拟string类的实现
  9. java stream 泛型
  10. RocketMQ 介绍与安装
  11. C++函数与java函数菜鸟级的对比理解
  12. Maven - 安装 配置
  13. CSS权威指南(第三版)笔记
  14. flash for linux安装教程,Flash Player 9 FOR Linux 的安装
  15. 计算机英语四六级对调剂有影响吗,四六级没过影响考研复试和调剂吗?各高校标准不一...
  16. 增长黑客手册——03
  17. 一个UIView最多能有多少个superView?
  18. 毁人不倦-令人困惑的浏览器安全策略:同源策略
  19. 全向移动机器人运动参数校准
  20. html图片百叶窗轮播,纯js百叶窗效果轮播图插件

热门文章

  1. Python数据可视化的例子——折线图(line)
  2. c语言 中文转拼音,汉字转换拼音解决思路
  3. 苹果手机里微信数据删除怎么恢复?
  4. 方舟手游修改服务器难度,方舟手游中途可以修改难度吗
  5. 2021年度总结—四非计算机保研经历(参营:清华网研院、中科大先研院、华师大数据科学院、厦大计算机系、上科大信息学院)
  6. 模拟电路学习之稳压管PROTUES
  7. 作品展第二周——痛并快乐着
  8. 《孙子兵法》十三篇注译(13--火攻篇)
  9. Blender设置:如何把编辑模式下的顶点显示调大
  10. 吴军《态度》读后感(1):人生哲学