码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 1.两数之和

时间:2019-12-26 21:18:46      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:两数之和   思路   整数   规范性   编译   二分   class   solution   格式   

题意

从数组中找出两个不同的整数,使得他们的和恰好为要求得到的数。输出他们的下标。

思路

  • 想法1:最直观的思路——二重循环遍历,时间复杂度\(O(n^2)\)。太暴力了,考虑优化。
  • 想法2:如果序列是有序的话,可固定x然后从数组中二分查找target - x。时间复杂度\(O(n*logn)\)
  • 想法3:利用桶排序的思想,存储每个数出现的次数,当遍历到x时看桶中是否存在target - x。时间复杂度\(O(n)\)。数据范围不知道,数组没法开,所以这个“桶”可用map实现。

代码

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        map<int, int> MP;
        for(int i = 0; i < nums.size(); ++i)
        {
            if(MP.count(target - nums[i]))
                return {i, MP[target - nums[i]]};
            MP[nums[i]] = i;
        }
        return {-1, -1};
    }
};

总结

这是第一次使用LeetCode,所以有些生疏。

首先是要提交的代码格式,给出了Solution的大体框架,像是做填空题一般要把自己的解法填上,这是和之前刷其他OJ最明显的不同点。

其次是这道题返回的值,返回的是个二元组,一开始没反应过来该怎么写。

最后是对规范性的要求,以为给定的数据一定会满足条件,所以没加找不到时返回{-1, -1};,但这样编译也通过不了。


都说“万事开头难”,现在我博客也搭好了,也通过AC第一道题熟悉了OJ的使用。接下来开始策马奔腾吧!冲冲冲!!!

LeetCode 1.两数之和

标签:两数之和   思路   整数   规范性   编译   二分   class   solution   格式   

原文地址:https://www.cnblogs.com/songjy11611/p/12104112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!