原文:给定一个整数sum,从n个有序的元素的数组中寻找a,b,使得a+b的结果最接近sum,最快的时间复杂度?

之前遇到的一道算法题,这里记录一下。 算法思想:因为是有序的,所以我们用s存放第一个元素的下标,用e存放最后一个元素的下标,那么arr s 就是所有元素中最小的,arr e 就是所有元素中最大的,所以我们判断arr s arr e sum的值是否大于 ,如果大于 那就说明 arr e 太大了,那么就e 。如果小于 ,arr s 太小了,那就s 。这个时候判断是否距离比上一个我们记录的距离更小,更小 ...

2020-09-17 16:31 0 492 推荐指数:

查看详情

两个有序数组合并成一个有序数组(要求时间复杂度为O(n))

面试题: 怎样把两个有序数组合并成有序数组呢 逻辑步骤: 1.假设两个数组为A和B 2.A和B都是从小到大的顺序进行排列 ** 1.我们可以直接比较两个数组的首元素,哪个小就把这个小元素放入可变数组。 2.把小元素所在的数组的这个元素删除。 3.继续比较两个数组的首 ...

Tue Mar 12 19:15:00 CST 2019 0 1891
给定一个长度为N数组,找出出现次数大于n/2,n/3的数,要求时间复杂度O(n),空间复杂度O(1)

  先讨论出现次数大于n/2的数字,如果这样的数字存在,那么这个数出现的次数大于其他数出现的次数的总和。 在数组A,我们定义两个数据集合a1,a2。a1为出现次数大于n/2的数的集合,a2为其余数组成的集合。对于数组 A中元素a、b,假设a不等于b,那么有两种情况,分别为:a属于a1,b属于 ...

Fri Nov 01 04:59:00 CST 2019 0 300
Leetcode练习(Python):数组类:第34题:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组不存在目标值,返回 [-1, -1]。

题目: 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组不存在目标值,返回 [-1, -1]。 思路:二分法,使用一个指针来找到数字的开头和结尾位置 ...

Sat Apr 18 23:01:00 CST 2020 0 1577
[整理] 时间复杂度 (B-Tree树)

时间复杂度一个函数,它定量描述了该算法的运行时间。 常见的时间复杂度有以下几种。 1,log(2)nnn log(2)nn的平方,n的三次方,2的n次方,n! 1指的是常数。即,无论算法的输入n是多大,都不会影响到算法的运行时间。这种是最优的算法。而n!(阶乘)是非常差的算法。当n ...

Sat Dec 12 17:20:00 CST 2020 0 1423
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM