LeetCode::两数之和——简单算法题

题目:

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

解题大致思路:

 个人感觉没什么技巧,就按照正常思路,利用两个循环把数组中元素加一遍,然后判断是否与目标值相等,不过这里还要保证不能是数组中的同一个元素。题目中还有一个要求就是只对应一种答案,所以找到符合条件的下标值之后就需要跳出整个循环,返回得到的下标值即可。

代码如下:

​class Solution{
	public:
		int* result(vector<int> &nums,int target){    //函数返回的是个数组
			int *a=NULL;
			int count=0;
			for(int i=0;i<nums.size()-1;i++)     //size()函数返回的是数组的大小
			{
				for(int j=i+1;j<nums.size();j++)
				{
					if(nums[i]+nums[j]==target)
					{
						*a=i;
						*(a+1)=j;
						count=1;
						return a;
					}
					break;
				}
				if(count==1)
				break;
			}
			return a;
		}
}; ​

这个比较麻烦了一点,下面有一个稍微简单点的方法:

扫描二维码关注公众号,回复: 2330827 查看本文章
class Solution{
	public:
		vector<int> result(vector<int> &nums,int target)   //返回值是用vector定义的动态数组 
		{
			vector<int> x;
			int count=0; 
			for(int i=0;i<nums.size()-1;i++)           //size()函数返回值是数组的大小 
			{
				for(int j=i+1;j<nums.size();j++)
				{
					if(i!=j&&nums[i]+nums[j]==target)
					{
						x.push_back(i);                 //push_back() 表示给数组x尾部插入元素 
						x.push_back(j);
						count==1;
						return x;
					}
					break;
				}
				if(count==1)
				break;
			}
			return x;
		}
};

猜你喜欢

转载自blog.csdn.net/weixin_42296178/article/details/81102604