leetcode之兩數之和c 解法

2021-09-17 05:16:19 字數 1268 閱讀 6610

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。

你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。

示例:

給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

遍歷每個元素x,查詢是否存在乙個值與target-x相等的目標元素。

時間複雜度:對每個元素都試圖遍歷陣列的其餘部分來尋找它所對應的目標元素,這將耗費o(n)的時間,n個元素所以時間複雜度是o(n2)。

空間複雜度:o(1)。

class solution ;}}

return vector{};

}};

第一次迭代:將每個元素的值和它的索引新增到表中。

第二次迭代:檢查每個元素對應的目標元素(target-nums[i])是否存在於表中。

時間複雜度:遍歷兩次包含n個元素的列表,雜湊表的查詢時間是o(1),所以時間複雜度是o(n)。

空間複雜度:所需的額外空間取決於雜湊表中儲存的元素數量,該表中儲存了n個元素,所以空間複雜度是o(n)。

class solution;//first訪問map的第乙個元素key,second訪問第二個元素value

}return vector();

}};

在第一遍遍歷元素插入到表中之前,先檢查表中是否已經存在當前元素對應的目標元素,如果已經存在,即找到了對應解,將其返回,如果不存在,將當前元素插入到表中繼續對下乙個元素進行操作。

時間複雜度:遍歷包含n個元素的列表一次,雜湊表每次查詢花費o(1)的時間,因此時間複雜度是o(n)。

空間複雜度:所需的額外空間取決於雜湊表中儲存的元素數量,該錶最多需要儲存n個元素,所以空間複雜度是o(n)。

class solution; //當前元素與之前插入表中的元素進行比對,所以雜湊表中元素的索引在前,當前元素序號在後

hash[nums[i]]=i;

} return vector{};

}};

LeetCode之兩數之和

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...

LeetCode之兩數之和

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...

Leetcode之兩數之和

題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1...