找出數組中兩個數之和爲指定的數
這個是lc中的一個簡單題,原題描述如下:
也就是說給定一個整型的數組,返回兩個數的下標,當然了,這兩個數不是隨意的,這兩個數的和要等於給定target。
下面是我的實現:
public class Solution {
public int[] twoSum(int[] nums, int target) {
int[] rst = {0,0};
int length = nums.length;
if(nums.length <= 0){
return rst;
}
for(int i = 0; i < length; ++i){
/*
if(target < nums[i]){
continue;
}
*/
//獲取還需要的另一個 數
int temp = target - nums[i];
int j = 0;
for(j = i + 1; j < length; ++j){
if(temp == nums[j]){
break;
}
}
//如果在後面的數字中找到了符合要求的
if(j < length){
rst[0] = i;
rst[1] = j;
}
}
return rst;
}
}
其實最簡單除暴的就是去遍歷兩次數組中的內容,然後逐個的相加來判斷是否相等, 這樣的時間複雜度是O(N^2)幾乎不考慮效率的可以這樣來蠻幹,但是我的這個首先是取出數組中的一個值,然後在數組之後的元素中去尋找是否存在一個數值等於target-current_number,如果有就返回,沒有就返回[0,0]
此時的時間複雜度是O(N)。