给定一个整数数组,找出其中两个数满足相加等于你指定的目标数字。
要求:这个函数twoSum必须要返回能够相加等于目标数字的两个数的索引,且index1必须要小于index2。请注意一点,你返回的结果(包括index1和index2)都不是基于0开始的。
你可以假设每一个输入肯定只有一个结果。
举例:
输入:numbers={2, 7, 11, 15}, target = 9
输出:index1 = 1, index2 = 2(不是基于0开始的)
==== 自己的解法 , 完全没有考虑效率, 时间复杂度是O(n的平方) ====
/** * Note: The returned array must be malloced, assume caller calls free(). */ int* twoSum(int* nums, int numsSize, int target) { int *ret = (int *)malloc(2*sizeof(int)); for (int i = 0; i <numsSize; i++ ) { for (int j = i+1 ; j < numsSize; j++) { if ((nums[i] + nums[j]) == target) { ret[0] = i; ret[1] = j; return ret; } } } return NULL; }
==== 自己的解法 ====
==== 下面考虑用hash提高效率 ====
