给定一个有序整数序列(非递减序),可能包含负数,找出其中绝对值最小的元素,比如给定序列-5, -3, -1, 2, 8 则返回1。
public class MinAbs { public static int calculate(int[] array) { return calculate(array, 0, array.length - 1); } public static int calculate(int[] array, int low, int high) { if (low == high) { if (array[low] < 0 && low + 1 < array.length) { return Math.abs(array[low]) > Math.abs(array[low + 1]) ? Math.abs(array[low + 1]) : Math.abs(array[low]); } else if (array[low] > 0 && low - 1 >= 0) { return Math.abs(array[low]) > Math.abs(array[low - 1]) ? Math.abs(array[low - 1]) : Math.abs(array[low]); } else { return Math.abs(array[low]); } } int mid = (low + high) / 2; if (array[mid] >= 0) { return calculate(array, low, mid); } else { return calculate(array, mid + 1, high); } } public static void main(String[] args) { int[] array = { -5, -3, -1, 2, 8 }; System.out.println(MinAbs.calculate(array)); } }
相关推荐
输入两个数,查找位于位于这两数区间的序列
给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元 素的情况下,该数组能否变成一个非递减数列。非递减数列定义如下:对 于数组中所有的 i (1 ),满足 array[i] [i + 1]
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 解题思路参考博客
题目把一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素NOTE:给出的所有元素都大于0,若数
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0 解题思路一:二分查找 ...
力扣热题Python源代码 题目34. 在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。... nums 是一个非递减数组 -109 <= target <= 109
c语言 c语言编程题之数组操作非递减序列
# 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 # 输入示例 # 输入:nums = [-4,-1,0,3,10] # 输出:[0,1,9,16,100] # 解释:平方后,数组变为 [16,...
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 概念回顾 二分法 ...
matlab中如何创建数组: 使用方括号创建数组; 创建二维数组; 逗号+分号的形式创建数组; 使用冒号创建数组; 间距固定的递增或递减数组; 使用函数linspace创建数组; 使用函数logspace创建数组; 采用...
数据结构的线性表实现,顺序线性表的建立,输入,输出,排序,以及归并。可以参考一下
数据结构中的链表合并: //合并函数 void MergeList_L(LinkList &L1;,LinkList &L2;,LinkList &L3;) { //已知单链线性表L1和L2的元素按值非递减排列。 //归并L1和L2得到新的单链线性表L3,L3的元素也按值非递减...
编写算法程序将非递减有序的单链表中值相同的多余结点删除。设线性表为顺序存储结构。
从键盘输入两个链表,通过程序对他们排序,之后按递增顺序合并链表
设ha和hb分别是两个带头结点的非递减有序单链表的表头指针,试设计一个算法,将这两个有序链表合并成一个非递减有序的单链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间。表中允许有重复...
采用二分查找:如果数组中的数字小于下标,由于下标是-1的递减数列,但是数组中的元素差值大于等于-1,因此左边的不可能等于下标。如果数组中的数字大于下标,同理,之后的数字肯定都大于下标,往左边查找。 算法...
⑵ 编写集合元素输入并插入到单链表中的函数INSERT_SET,保证所输入的集合中的元素是唯一且以非递减方式存储在单链表中; ⑶ 编写集合元素输出函数,对建立的集合链表按非递增方式输出; ⑷ 编写求集合A、B的交C=A∩...
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 又例如{1,0,1,1,1}和{1,1,1,0,1}都可以看成是递增排序数组{0,1,1,1,1}的...
An,求这个序列中最长的递减子序列的长度M, 以及该序列可以划分成这种子序列的个数N 如序列: 300 250 252 275 200 138 245 折分成的子序列分别为 300 275 200 138 252 245 250 其中最长序列为: 300 275 200 138 ...
数据结构实验报告