01、目录
目录
- 01、目录
- 02、问题描述
- 03、思路
- 04、代码实现
- 05、小结
02、问题描述
两数之和:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
- 示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
03、思路
首先,我们看到这个题目和示例,我们就应该清楚的明白,就是一个判断数组中任意两数之和是否能够匹配目标值。这是腾讯的一道简单面试题。
我的思路:既然是求任意两数之和,又不能重复,例如nums[1] + nums[1]这是不合题意的。
那就直接两个循环,然后依次遍历相加,这种是在不在意内存和时间的情况下,暴力求解。
04、代码实现
- C++代码:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> vec;
for(int i = 0; i < nums.size()-1; i++)
{
for(int j = i+1; j < nums.size(); j++)
{
if(nums[i]+nums[j] == target)
{//添加进容器
vec.push_back(i);
vec.push_back(j);
}
}
}
return vec; //返回容器,如果没有找到就是返回一个NULL容器
}
};
- C代码:
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
int *ret = (int *)malloc((2*sizeof(int)));
for(int i = 0; i < numsSize - 1; i++)
{
for(int j = i + 1; j < numsSize; j++)
{
if(nums[i] = target - nums[j])
{
*ret = i;
*(ret + 1) = j;
*returnSize = 2;
return ret;
}
}
}
return 0;
}
05、小结
上面所用的方法都是同一种暴力解题。我看了下网上有人用哈希表解,限于博主数据结构功底确实太low,无法给予一定得见解,这里就不提哈希表这种方法了,感兴趣的可以去看看其他博主。
版权声明:转载请注明出处,谢谢。