概述
/*
============================================================================
Name : interview.c
Author : WangKun
Version :
Copyright :
Description :
============================================================================
*/
#include <stdio.h>
#include <stdlib.h>
int searchNumSumInArray(int *array,unsigned int size, int value,
unsignedint *index1, unsigned int *index2);
int main(void) {
intvalue = 12;
intarray[8] = {3, 9 , 11, 17, 21, 32, 41, 59};
unsignedint index1 = 0, index2 = 0;
intret = searchNumSumInArray(array, sizeof(array)/sizeof(int),
value,&index1, &index2);
if( ret == 1)
{
printf("numbersare found! array[%d]:%d, array[%d]:%dn",
index1,array[index1],index2, array[index2]);
}
else
printf("numbersare NOT found!n");
returnEXIT_SUCCESS;
}
/*在一个有序数组里面,找到两个数,这两个数的和等于给定的一个值,要求复杂度为O(n) */
int searchNumSumInArray(int *array,unsigned int size, int value,
unsignedint *index1, unsigned int *index2)
{
if(NULL == array || 0 == size )
return0;
intbegin = 0, end = size - 1, sum = 0;
while( begin <= end )
{
sum= array[begin] + array[end];
if( sum == value)
{
*index1= begin;
*index2= end;
return1;
}
if( sum > value )
end--;
else
begin++;
}
return0;
}
最后
以上就是贪玩水杯为你收集整理的在一个有序数组里面找到两个数,其中它们的和为某个值,要求时间复杂度为O(n)的全部内容,希望文章能够帮你解决在一个有序数组里面找到两个数,其中它们的和为某个值,要求时间复杂度为O(n)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复