給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。
示例:給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
雙重迴圈複雜度較高。可以借助字典結構,當遍歷到某一數值num時,去查詢(target-num)是否存在於字典中,該查詢的時間複雜度是o(1)。
1class
solution(object):
2 @staticmethod #
two_sum方法不涉及對類屬性的操作
3def
two_sum(nums, target):
4 num_store = dict() #
儲存key-value
5for i, num in
enumerate(nums):
6if target - num in
num_store:
7return [i, num_store[target -num]]
8else
:9 num_store[num] = i #
此處key是num,value是i,需要使用num定位其下標i
1011
if__name__ == '
__main__':
12 the_target = 9
13 the_nums = [2, 7, 11, 15]
14 s =solution()
15 result =s.two_sum(the_nums, the_target)
16print(result) #
[1, 0]
1 #include "pch.h
"2 #include 3 #include 4 #include 5
using
namespace
std;67
class
solution
20else
21 hash[nums[i]] =i;22}
23//
return result;
//leetcode上必須有這一行的返回結果24}
25};
2627
intmain() ; //
初始化vector的方法
30solution s;
31for (auto res: s.twosum(thenums, thetarget))
34 }
三數之和(Python and C 解法)
給你乙個包含 n個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 請你找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。示例 給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 需要三個指標 當前...
兩數之和,三數之和
兩數之和 方法一 暴力 throw new illegalargumentexception 時間複雜度 o n 2 空間複雜度 o 1 public int twosum int nums,int target throw newillegalargumentexception no twosum...
leetcode 兩數之和與兩數之和
題目描述 給定乙個已按照公升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。說明 返回的下標值 index1 和 index2 不是從零開始的。你可以假設每個輸入只對應唯一的答案,而且你不...