假设数组是从小到大排序,数值可能为负数、0、正数。 思路一 可以一次性遍历一遍,找出绝对值最小值,此时时间复杂度为O(N),缺点是没有利用数组是有序的这一特点。 思路二 数组有序,可以利用二分查找的特性。中间的数是正数,往后找;中间的数是负数,往前找。 问题的本质是找到正数的最小值 ...
问题: 一个有序数组,值有可能有负值,也有可能没有,现需要找出其中绝对值最小的值。 方法 : 遍历数组,找到绝对值最小值,时间复杂度O n ,n为元素个数。 方法 : 二分查找,因为数组有序,可以利用二分查找,时间复杂度O logn 。 分析步骤: 如果第一个数为正数,说明整个数组没有负数,直接返回第一个数 如果最后一个数为负数,说明整个数组没有正数,直接返回最后一个数 数组元素有正有负,说明绝对 ...
2016-05-07 18:24 2 1365 推荐指数:
假设数组是从小到大排序,数值可能为负数、0、正数。 思路一 可以一次性遍历一遍,找出绝对值最小值,此时时间复杂度为O(N),缺点是没有利用数组是有序的这一特点。 思路二 数组有序,可以利用二分查找的特性。中间的数是正数,往后找;中间的数是负数,往前找。 问题的本质是找到正数的最小值 ...
思路描述:假设 0~n-1 中没有数字 i ,那么这 n - 1 个数字的和为 sum = n*(n-1)/2 - i,那么 i = n*(n-1)/2 - sum。 其实我们可以注意到,从缺失的数字 i 开始下标和数值不相等 前两种做法时间复杂度均为 O(n ...
1 输入10个整数,找出其中绝对值最小的数(10分) 题目描述 输入10个整数,找出其中绝对值最小的数 输入 十个整数 输出 绝对值最小的数 样例输入 样例输出 -2绝对值函数 整型 abs ...
给定一整形数组a,要求从中找出最大的数和最小的数,并计算时间复杂度。 实现1: 遍历数组,每次取数组中一个元素, 分别与当前最大值和最小值进行比较,时间复杂度O(2n ...
该题目的两种实现方式,第一种是用堆排序(其中数组用到了二叉树的性质),第二种是利用快速排序来实现. 第一种:堆排序 最大堆进行升序排序,主要步骤是 1.初始化堆:将数列a[1...n]构造成最大堆。 2.交换数据:将a[1]和a[n]交换,使a[n]是a[1...n]中的最大值 ...
题目描述: 给定一个无序整数数组,返回这个数组中第k小的数。 解析: 最平常的思路是将数组排序,最快的排序是快排,然后返回已排序数组的第k个数,算法时间复杂度为O(nlogn),空间复杂度为O(1)。使用快排的思想,但是每次只对patition之后的数组的一半递归,这样可以将时间复杂度 ...
运行结果: ...