求解一个数组里等于给定整数和的两个数的O(n)时间复杂度算法
2014-04-16 14:36
323 查看
#include <iostream> using namespace std; #define size 10 //求一個有序数组中和等于某个数的算法 //若成功则返回1 若失败则返回-1 //采用从两端分别降低区间 int togetherAdd(int arr[],int value) { int i=0; int j=size-1; while(i<=j) { if(i==j)return -1; if((arr[i]+arr[j])==value)return 1; if((arr[i]+arr[j])>value)j--; if((arr[i]+arr[j])<value)i++; } } int main() { int arr[]={1,5,12,13,20,100,111,112,200,400}; cout<<togetherAdd(arr,121); return 0; }
相关文章推荐
- 求解一个数组里等于给定整数和的两个数的O(n)时间复杂度算法
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 要求:空间复杂度O(1),时间复杂度为O(n)。
- 给定一个未排序的整数数组,找到第一个缺失的正整数 您的算法应在O(n)时间运行,并使用恒定空间。
- 已知一个整数数组A[n],写出算法实现将奇数元素放在数组的左边,将偶数放在数组的右边。要求时间复杂度为O(n)。
- Java算法给定一个整数数组,找出其中两个数相加等于目标值
- 4.给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 要求:空间复杂度O(1),时间复杂度为O(n)
- leetcode-java.T001_TwoSum 给定一个整数数组,找出其中两个数满足相加等于你指定的目标数字
- 题目1.请给出一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个证书x时,判断出S中是否存在有两个其和等于x的元素。
- 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target(容易)
- 判断一个整数数组中是否有重复数字出现的O(n)时间复杂度算法
- 百度笔试:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 要求:空间复杂度O(1),时间复杂度为O(n)
- 题目:请给出一个运行时间为Θ(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。
- 描述一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数 X 时,判断出S中是否存在有两个其和刚好等于 X 的元素。
- 题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,
- 两数之和:给定一个整数数组,找出其中两个数相加等于目标值
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。要求:空间复杂度O(1),时间复杂度为O(n)
- 题目四:给定一个数组,值可以为正、负和0,请返回累加和小于等于k的最长子数组长度。 时间复杂度:O(n)
- Java算法给定一个整数数组,找出其中两个数相加等于目标值
- 一个数组,其中除两个数外,其余的数全是成对出现的,用时间复杂度O(n),空间复杂度O(1)求解不成堆出现的两个数
- 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所 有偶数位于数组的后半部分。要求时间复杂度为O(n)。