找个算法题练练手,顺便记录一下。
描述
给出一个整型数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列。
(注:返回的数组下标从1开始算起,保证target一定可以由数组里面2个数字相加得到)
数据范围:2\leq len(numbers) \leq 10^52≤len(numbers)≤105,-10 \leq numbers_i \leq 10^9−10≤numbersi≤109,0 \leq target \leq 10^90≤target≤109
要求:空间复杂度 O(n)O(n),时间复杂度 O(nlogn)O(nlogn)
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param numbers int整型一维数组
* @param numbersLen int numbers数组长度
* @param target int整型
* @return int整型一维数组
* @return int* returnSize 返回数组行数
*/
int* twoSum(int* numbers, int numbersLen, int target, int* returnSize ) {
// write code here
int i=0,j=0;
int num = 0;
static int retAry[2];
for(i=0; i<numbersLen-1; i++)
{
if(numbers[i] > target)
continue;
for(j=i+1; j<numbersLen; j++)
{
if(target == numbers[i]+numbers[j])
{
retAry[0] = i+1;
retAry[1] = j+1;
*returnSize = 2;
break;
}
}
}
return retAry;
}