leetcode 两数之和 梦开始的地方。。。

1.题目

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

示例:

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

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum

2.思路

思路一 双重循环

将数组中的 每一个数 依次与 其后面的数 组合与target比较,如果相等直接(题目中说每种输入只有一个答案)返回两个数的位置i,j即可。

思路二 哈希表(还没学,学过之后回来更新)

3.代码实现

C++

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        for(int i=0;i<nums.size()-1;i++)      //外循环从头开始,到倒数第二个数为止
        {
            for(int j=i+1;j<nums.size();j++)  //内循环从i+1开始,到最后一个数为止
            {
                if(target==nums[i]+nums[j])
                {
                    return {i,j};             //相比 int main()中的“return 0;”返回整数是因为main()函数是用int定义的,
                }                             //而twosum是用vector定义的,vector是无限制的数组,因此要返回一个数组形式即{i,j}。
            }
        }
        return {};                            //由于题目一定有一个答案,所以必须返回一个值,否则会报错。
    }
};

4.过程中出现的错误

(1)vector中自带的函数.size()可以计算数组的长度(输入数的个数)
我一开始以为sizeof()可以计算数组长度,并且测试数据还过了,提交之后一直显示执行错误。。。
结果sizeof()是计算字节数的,导致计算多了,用了没有赋值的数组部分。
(2)还有一些数组下标的问题,简单模拟一下就能解决。

5.其它相关知识点

class类 (struct结构体)

class tree
{
	public:
	int left;
	char right;
};
tree one;

以前用过几次,大概是这么个格式,类的里面可以定义各种类型的变量,相当于把几个变量联系在一块儿。
可以用one.left或者one.right调用里面的变量。
好像还可以在里面定义函数(目前还不会)

vector

sizeof()

数组a[]中a和&a的区别

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值