找出數組中兩個數之和爲指定的數

找出數組中兩個數之和爲指定的數

這個是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)。

發佈了57 篇原創文章 · 獲贊 108 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章