Description:
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].
思路:
类似冒泡排序,遍历数组,查找两个数字并返回下标:
自己实现的渣渣C++版:(129ms QAQ)
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> res(2,0) ;
for(int i = 0;i < nums.size();++i){
for(int j = i + 1;j < nums.size();++j){
if(nums[j] == target - nums[i] ){
res[0] = i;
res[1] = j;
}
}
}
return res;
}
};
C语言版(106ms):
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* twoSum(int* nums, int numsSize, int target) {
for(int i = 0;i < numsSize;++i){
for( int j = i + 1;j < numsSize;++j){
if( nums[i] + nums[j] == target){
int* res = (int*)malloc(sizeof(int)*2);
*res = i;
*(res + 1) = j;
return res;
}
}
}
return 0;
}