題目:給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。
方法一:遍歷每個元素x,查詢是否存在乙個值與 target -x 相等。
public
int[
]twosum
(int
nums,
int target);}
}}throw
newillegalargumentexception
("未找到匹配的引數!");
}
時間複雜度:o(n^2),空間複雜度:o(1)
方法二:空間換時間。第一次遍歷陣列將陣列的元素和下標放至hashmap中,第二次遍歷陣列判斷hashmap中是否存在target-num[i]的key,且不能為同一元素。
注:此方法不允許陣列中存在重複元素。
public
int[
]twosum
(int
nums,
int target)
for(
int i =
0; i < nums.length; i++);
}}throw
newillegalargumentexception
("未找到匹配的引數!");
}
時間複雜度:o(n),空間複雜度:o(n)
方法三:同方法二,但只進行一次遍歷
public
int[
]twosum
(int
nums,
int target);}
map.
put(nums[i]
, i);}
throw
newillegalargumentexception
("未找到匹配的引數!");
}
時間複雜度:o(n),空間複雜度:o(n)
測試用例:
public
static
void
main
(string[
] args),5
);// int result = s.twosum(new int[0],3);
// int result = s.twosum(new int,-1);
// int result = s.twosum(new int,100);
for(
int i:result) system.out.
print
(i +
" ")
;}
兩數之和,三數之和
兩數之和 方法一 暴力 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 不是從零開始的。你可以假設每個輸入只對應唯一的答案,而且你不...
兩數之和 三數之和 四數之和
兩數之和意思就是 給你乙個陣列,從中找出兩個數字,讓他們的和等於乙個具體的target。找到所有這樣的兩個數。並且這兩個數字不能完全一樣。n數之和的意思是 給你乙個陣列,從中找出n個數字,讓他們的和等於乙個具體的target。找到所有這樣的n個數。並且這n個數字不能完全一樣。最基礎的,也是最關鍵的就...