如何在一个给定数组中找两个和为某个定值的数,要求时间复杂度为O(n)
来源:互联网 发布:手淘网络 编辑:程序博客网 时间:2024/06/07 08:49
由于数组中元素是按递增顺序排列,因此你可以从两端开始寻找减少比较次数 ,时间复杂度为O(1).#include<iostream>using namespace std;bool find(int data[], int length, int num, int &num1, int &num2){ int head = 0;int tail = length - 1;while (head != tail){int temp= data[head] + data[tail];if (temp == num) { num1 = data[head];num2= data[tail];return true; } if (temp<num) head++;else tail--;}return false;}int main(void){int data[] = { 1, 2, 4, 7, 11, 15 };int a = 0, b = 0;if (find(data, 6, 15,a,b)){cout<<a<<" "<<b<< endl;}else cout<<"no numbers"<< endl;return 0;}
0 0
- 如何在一个给定数组中找两个和为某个定值的数,要求时间复杂度为O(n)
- 在一个有序数组里面找到两个数,其中它们的和为某个值,要求时间复杂度为O(n)
- 在已排序的数组中寻找和是给定值的两项,要求时间复杂度为O(n)
- 两数之和二 给定一个整形的数组,找出其中的两个数使其和为某个指定的值,并返回这两个数的下标(数组下标是从0开始)。假设数组元素的值各不相同,则要求时间复杂度O(n),n为数组的长度
- C++在已排序数组中查找和值确定的第一次出现的两个数(要求时间复杂度为o(n))
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 要求:空间复杂度O(1),时间复杂度为O(n)。
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。要求:空间复杂度O(1),时间复杂度为O(n)
- 排序数组中查找和为给定值的两个数O(n)
- 一个数组中,存在两个只出现一次的数字,其余的数字均出现两次。要求在时间复杂度o(n),空间复杂度为o(1)的情况下找出这两个数字
- 给定一个字符串,查找该字符串中第一个重复出现的字符索引。要求:时间复杂度为O(n)。
- 排序一个数组要求时间复杂度为O(N)
- 有1,2,…,n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度O(1),一次只能交换两个数
- 找出一个数组中出现次数超过一半的那个数字,要求时间复杂度O(n)和空间复杂度为O(1)。
- 求解一个数组里等于给定整数和的两个数的O(n)时间复杂度算法
- 求解一个数组里等于给定整数和的两个数的O(n)时间复杂度算法
- 在时间复杂度为 O(n) 内找出数组中出现次数超过一半的数
- 百度笔试:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 要求:空间复杂度O(1),时间复杂度为O(n)
- 4.给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 要求:空间复杂度O(1),时间复杂度为O(n)
- UFT的使用
- LGame学习笔记2-----使用Sprite类绘制人物
- Effective Unity3D
- 黑马程序员_JAVA基础
- cygraph
- 如何在一个给定数组中找两个和为某个定值的数,要求时间复杂度为O(n)
- 论奋斗
- Java中如何获取到资源文件
- vim基本命令总结
- 使用JDBC连接并操作数据库
- 黑马程序员——Java继承
- 最大增长子序列(Java)
- 征服C指针读书笔记 1 ----- 指针基本概念
- 人脸检测-基于模板匹配的实现