leetcode_two sum()

最近觉得自己很渣,所以在这里立下flag,从今天开始每天刷一道leetcode上的题目,并且在这里进行代码整理,闲话少说,进入正题:

一、Two sum

题目要求:


我的答案:

    vector<int> twoSum(vector<int>& nums, int target) {
    unordered_map<int, int> hash;
	vector<int> result;
	for (int i = 0; i < nums.size(); i++) {
		int numberToFind = target - nums[i];
		if (hash.find(numberToFind) != hash.end()) {
			result.push_back(hash[numberToFind]);
			result.push_back(i);
			return result;
		}
		hash[nums[i]] = i;
	}
	return result;
    }
思路解析:

       这个题目还是参考了别人的答案的,因为自己没想到好的办法。具体思路就是用目标数据target减去数组nums中第i个数据得到值numbertofind,然后在hash中寻找numbertofind,若能找到,则把i与numbertofind的下表按大小顺序输出,程序结束,若找不到,则把第i个数据与其下标压入hash,然后遍历第i+1个数据,直到找多正确的组合或者遍历完所有的数据,程序退出。

       假如这里要求是三个不同的数据相加得到target,这种办法将不再适用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值