1. 两数之和
题目描述:
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:
给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
思路:最简单的办法就是循环遍历,找出与target相等的两个数。对应的时间复杂度是O(n2),空间复杂度是O(1)
1 /** 2 * Note: The returned array must be malloced, assume caller calls free(). 3 */ 4 int* twoSum(int* nums, int numsSize, int target) { 5 6 int i,j; 7 int * result; //用来存放结果 8 9 for( i=0; i<numsSize; i++) 10 { 11 for( j=i+1; j<numsSize; j++) 12 { 13 if( target == ( *(nums+i)+ *(nums+j) ) ) 14 { 15 result=(int *)malloc(sizeof(int) * 2); //新建内存,存放结果 16 17 result[0]=i; 18 result[1]=j; 19 20 break; //找到结果,结束循环 21 } 22 } 23 24 } 25 26 return result; 27 28 }

浙公网安备 33010602011771号