标签:两数之和 思路 整数 规范性 编译 二分 class solution 格式
从数组中找出两个不同的整数,使得他们的和恰好为要求得到的数。输出他们的下标。
x
然后从数组中二分查找target - x
。时间复杂度\(O(n*logn)\)。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的使用。接下来开始策马奔腾吧!冲冲冲!!!
标签:两数之和 思路 整数 规范性 编译 二分 class solution 格式
原文地址:https://www.cnblogs.com/songjy11611/p/12104112.html