LeetCode01 Two_Sum

来源:互联网 发布:linux安装字体包 编辑:程序博客网 时间:2024/05/21 17:19

踏入LeetCode大门的第一题,难度简单,一个数组中两个位置上的和为指定的数,求这两个位置。

思路为哈希,代码如下。细节上要注意分配空间大小,边界处理。


class Solution {

public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> array;
        int *hash = new int[200000];
        int offset = 10000;//防止负数
        memset((void*)hash, 0, 200000*sizeof(int));
        for(int i = 0; i < nums.size(); ++i){
            int idx = target - nums[i];
            if(hash[idx + offset]){
                array.push_back(hash[idx + offset] - 1);
                array.push_back(i);
                break;
            }
            hash[nums[i] + offset] = i + 1;
        }
          return array;
    }
};
0 0
原创粉丝点击