Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].
题目意思就是给定一个整数数组,将它们加到一个特定的目标中并返回两个数字的下标 可以假定每个输入都只有一个解决方案,不会使用相同的元素两次。
题目很简单,只要把每两个元素加一次就行,下面自己的代码,效率很低。还有一种方法是哈希表,奈何萌新一枚,不会,等学会再补。
/** * Note: The returned array must be malloced, assume caller calls free(). */ int* twoSum(int* nums, int numsSize, int target) { int *pt = (int)malloc(2*sizeof(int)); int i, j; for(i=0; i<numsSize; i++) for(j=i+1; j<numsSize; j++) { if(nums[i]+nums[j]==target) { pt[0] = i; pt[1] = j; return pt; } } return pt; }