【每日一题】递增序列中绝对值最小的数
题目描述
给定一个递增数组,求其中绝对值最小的那个数。
如给定数组为:-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];}
}
【每日一题】递增序列中绝对值最小的数相关推荐
- 如何求数组中绝对值最小的数?
""" 有一个升序排列的数组,数组中可能有正数,负数或0,求数组中元素的绝对值最小的数.例如,数组[-10,-5,-2,7,15,50],该数组中绝对值最小的数是2 &q ...
- 找出有序数组中绝对值最小的数
假设数组是从小到大排序,数值可能为负数.0.正数. 思路一 可以一次性遍历一遍,找出绝对值最小值,此时时间复杂度为O(N),缺点是没有利用数组是有序的这一特点. int getMinAbs(int[] ...
- 面试题: 求绝对值最小的数
题目: 有⼀个已经排好序的整数序列(升序,⽆重复项),序列中可能有正整数.负整数或者0,请 ⽤你认为最优的⽅法求序列中绝对值最⼩的数.**_要求不能使⽤顺序⽐较的⽅法(时间复杂 度需要⼩于 O(n) ...
- 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)的值为______ ...
- Python---寻找给定序列中相差最小的两个数字
编写函数,寻找给定序列中相差最小的两个数字 def getTwoClosestElements(arr):#先进行排序,使得相邻元素最接近#相差最小的元素必然相邻seq = sorted(arr)#先 ...
- python中表达式4**0.5的值为_Python内置函数__用来返回序列中的最小元素
[填空题]表达式 int(4**0.5) 的值为 [判断题]3+4j不是合法的Python表达式. [填空题]已知列表对象x = ['11', '2', '3'],则表达式 max(x) 的值为 [填 ...
- python内置函数可以返回序列中的最大元素_Python内置函数__用来返回序列中的最小元素...
[判断题]不可以在同一台计算机上安装多个Python版本. [判断题]Python是一种跨平台.开源.免费的高级动态编程语言. [填空题]假设列表对象aList的值为[3, 4, 5, 6, 7, 9 ...
- 每日一题——反转字符串中的单词
每日一题 反转字符串中的单词 题目链接 思路(进阶) 我们首先不考虑太多限制因素,先看如何实现字符串中单词的反转 举个例子:我们要反转字符串"the sky is blue"中的单 ...
- Java学习手册:(数据结构与算法-数组)如何求绝对值最小的数?
问题: 有一个升序排列的数组,数组中可能有正数.负数或0,求数组中元素的绝对值最小的数,例如,数组{-10,-5,-2,7,15,50},绝对值最小的是2. 方法一: 对于升序数组,求绝对值最小的数可 ...
- JSK-399 绝对值最小的数【大数】
绝对值最小的数 输入 10 个数,找出其中绝对值最小的数,将它和最后一个数交换. 输入格式 输入一行包括 10 个绝对值不超过 1000 的整数. 输出格式 输出 10 个交换后的整数,答案输出在一行 ...
最新文章
- mysql中如何设置过滤器_mysql – 使用计数器实现过滤器
- jquery-1 jquery几个小实例
- Bootstrap学习笔记-布局
- 初等数论--同余方程--同余方程运算:模逆运算,模指数运算
- NS3可视化问题及解决办法
- 深入剖析:Super Jumping! Jumping! Jumping! (动规)
- mysql多张表join_mysql 连接查询(多表查询)+子查询-初学教程 3【重点】
- 内存分布malloc/calloc/realloc/free/new/delete、内存泄露、String模板、浅拷贝与深拷贝以及模拟string类的实现
- java stream 泛型
- RocketMQ 介绍与安装
- C++函数与java函数菜鸟级的对比理解
- Maven - 安装 配置
- CSS权威指南(第三版)笔记
- flash for linux安装教程,Flash Player 9 FOR Linux 的安装
- 计算机英语四六级对调剂有影响吗,四六级没过影响考研复试和调剂吗?各高校标准不一...
- 增长黑客手册——03
- 一个UIView最多能有多少个superView?
- 毁人不倦-令人困惑的浏览器安全策略:同源策略
- 全向移动机器人运动参数校准
- html图片百叶窗轮播,纯js百叶窗效果轮播图插件