小木leetcode刷题记——2021.10.20

    找不到人生目标了,想走到人生巅峰了,想叱诧风云,睥睨九州了,那就来leetcode刷题吧。行了,leetcode官方见到上一条广告,不要忘了交个广告费。

leetcode第一题

想法还是for循环,不过为了看起来不那么弱,用了点迭代器知识 

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int pre, next = 0;
        vector<int>data;
        vector<int>::iterator iter;
        vector<int>output_data;
        int location_last;
        for (int j = 0; j < nums.size(); j++)
        {
            pre = nums[j];
            next = target - pre;
            iter = find(nums.begin()+j+1, nums.end(), next);
            output_data.push_back(j);
            if (iter==nums.end())
            {
                output_data.pop_back();
            }
            else
            {
                location_last = distance(std::begin(nums), iter);
                output_data.push_back(location_last);
                return output_data;
            }
        }
        return vector<int>();
    }
};

期间出现过某些问题,比如

 让我明白了要考虑全面,作为一个非void的函数,要考虑所有的返回情况,所以要有return vector<int>()

此题中find函数是新学会的一个函数,为了保证它的搜索范围是随着寻找值而改变,最好采用nums.begin()+j+1,不断寻找。否则对那些数组中有重复值的输入非常的不友好。

然后leetcode中是不需要自己cin的,因为cin被反复报错。。

最后,贴一下find函数的定义

template<class InputIterator>
  typename iterator_traits<InputIterator>::difference_type distance (InputIterator first, InputIterator last);

其中,first 和 last 都为迭代器,其类型可以是输入迭代器、前向迭代器、双向迭代器以及随机访问迭代器;该函数会返回[first, last)范围内包含的元素的个数。

最后的最后,第一题都这么砍,未来可期。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值