如何求有序数组绝对值最小的数
问题:有一个有序数组,如何求绝对值最小的数。
形如:-10 -5 -2 7 15 20, 绝对值最小为-2
思路:
1。没有正数的情况下,最右边就是绝对值最小的
2。没有负数的情况下,最左边就是绝对值最小的。
3。有正数负数有0的情况下,找到0
4。只有正数负数的情况下,找到分界点
public static int getMinAbsoluteValue(int[] a) {if(a == null) {return Integer.MAX_VALUE;}int len = a .length;if(len<1) return Integer.MIN_VALUE;if(a[0]>=0)return a[0]; //没有负数if(a[len-1]<=0) return a[len-1];//没有正数int mid = 0;int begin = 0;int end = len-1;int absMin = 0;//数组中既有正数又有负数while(true) {mid = (begin+end)>>>1;//如果值等于0,那么就是绝对值最小的数if(a[mid] == 0) return 0;else if(a[mid]>0) {//如果值大于0,那么正负数的分界点在左半部分if(a[mid-1]>0) end = mid-1;else if(a[mid-1] ==0) return 0;else break;}else {//如果值小于0,在数组右半部分查找if(a[mid+1]<0) {begin = mid+1; }else if(a[mid+1] ==0) return 0;else break;}}//获得正负数分界点出绝对值最小的值if(a[mid]>0) {if(a[mid]<Math.abs(a[mid-1])) {absMin = a[mid];}else {absMin = a[mid-1];}}else {if(Math.abs(a[mid])<a[mid+1]) absMin = a[mid];else absMin = a[mid+1];}return absMin;}
如何求有序数组绝对值最小的数相关推荐
- 如何求数组中绝对值最小的数?
""" 有一个升序排列的数组,数组中可能有正数,负数或0,求数组中元素的绝对值最小的数.例如,数组[-10,-5,-2,7,15,50],该数组中绝对值最小的数是2 &q ...
- Java学习手册:(数据结构与算法-数组)如何求绝对值最小的数?
问题: 有一个升序排列的数组,数组中可能有正数.负数或0,求数组中元素的绝对值最小的数,例如,数组{-10,-5,-2,7,15,50},绝对值最小的是2. 方法一: 对于升序数组,求绝对值最小的数可 ...
- 面试题: 求绝对值最小的数
题目: 有⼀个已经排好序的整数序列(升序,⽆重复项),序列中可能有正整数.负整数或者0,请 ⽤你认为最优的⽅法求序列中绝对值最⼩的数.**_要求不能使⽤顺序⽐较的⽅法(时间复杂 度需要⼩于 O(n) ...
- javascript:求绝对值最小的数
问题来源:http://androidguy.blog.51cto.com/974126/1129543 有一个已经排序的数组(升序),数组中可能有正数.负数或0,求数组中元素的绝对值最小的数,要求, ...
- 《剑指offer》-- 把数组排成最小的数、丑数、二进制中1的个数、表示数值的字符串、替换空格
一.把数组排成最小的数: 1.题目: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为 ...
- 数据结构与算法--将数组排成最小的数
将数组排成最小的数 题目:输入一个正整数的数组,将数组中所有数字拼接在一起排列成一个新的数,打印能拼接出来的所有数字中最小的一个, 案例:输入数组{12,4,55},则能打印出最小的数组是:12455 ...
- JSK-399 绝对值最小的数【大数】
绝对值最小的数 输入 10 个数,找出其中绝对值最小的数,将它和最后一个数交换. 输入格式 输入一行包括 10 个绝对值不超过 1000 的整数. 输出格式 输出 10 个交换后的整数,答案输出在一行 ...
- 列表转化成数组_30. 把数组排成最小的数
把数组排成最小的数 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为3213 ...
- 【剑指offer-Java版】33把数组排成最小的数
把数组排成最小的数 难点在于比较规则的确定以及比较规则的正确性证明 比如:仅仅是局部的两个数字的顺序较小,如何保证整个数组按此规则进行排序后达到全局的较小 书中关于这一点的证明直接用的反证法,忘的差不 ...
- 33:把数组排成最小的数
/*** 面试题33:把数组排成最小的数* 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.* 例如输入数组{3,32,321},则打印出这三个数字能排成的 ...
最新文章
- 一年暴涨近20倍,比特币是郁金香泡沫还是庞氏骗局?
- 《实现模式(修订版)》—第1章1.2节那么,现在……
- ikvm Java中异常_使用IKVMC将Java转换为.NET库 – 警告IKVMC0108:...
- java学习笔记-4.7
- oracle sqlplus @@用法
- 【神经网络】神经网络结构在命名实体识别(NER)中的应用
- 算法二之树形选择排序
- JavaSE:如何设置/获取您自己的文件和目录属性
- 牛客竞赛mjt的毒瘤赛
- 计算机组成原理教案pdf,计算机组成原理教案模板.pdf
- PDG转PDF全攻略
- 大数据下的供应商评分系统
- 用python搭建邮箱,自动收发邮箱
- 如何制作网页教程:如何制作网页最简单的方法
- uniapp的苹果全屏播放再退出会导致页面字体变大解决方法
- 如何保存你的登录密码
- c语言降序字母,怎么实现对数组的降序排序
- windows10系统如何安装日语输入法
- 长沙计算机学院欧阳登轶,我校学生在2020年湖南省第十六届“强智杯”大学生计算机程序设计竞赛中喜获一等奖...
- python 桑基图_3行代码基于python的matplotlib绘制桑基图