[leetcode] 1. Two sum

Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].  



解題思路

最直觀的想法采用暴力搜索法,時(shí)間復(fù)雜度為O(N*N), 但提交的時(shí)候Time Limit Exceeded, 因此暴力搜索不可取。


要想達(dá)到O(N)的時(shí)間復(fù)雜度,根據(jù)空間換時(shí)間的準(zhǔn)則,用哈希表存儲(chǔ)數(shù)組元素和Index的對(duì)應(yīng)關(guān)系,具體代碼如下:

class Solution
{
    vector<int> twoSum(vector<int>& nums, int target) {
    unordered_map<int, int> hash;
    vector<int> res;
    for (int i = 0; i < nums.size(); i++) {
        int temp = target - nums[i];
        if (hash.find(temp) != hash.end()) { //如果在哈希表中查到對(duì)應(yīng)的數(shù)字,返回結(jié)果
            res.push_back(hash[temp]);
            res.push_back(i);           
            return res;
        }
        hash[nums[i]] = i; //沒有查到結(jié)果,將數(shù)組元素和Index加入哈希表
    }
    return res;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容