Leet Code OJ 1. Two Sum [Difficulty: Easy]

題目:
Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution.

Example:
Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

翻譯:
給定一個(gè)整形數(shù)組和一個(gè)整數(shù)target,返回2個(gè)元素的下標(biāo),它們滿足相加的和為target。
你可以假定:每次輸入都會(huì)恰好有一個(gè)滿足條件的返回結(jié)果。

(參考別人的解法)
方法一:

    public static int[] twoSum(int[] nums, int target) {

        if(nums == null || nums.length == 0) return null;
        HashMap<Integer, Integer> hashMap = new HashMap<>();
        for(int i = 0; i < nums.length; i++) {
            hashMap.put(nums[i], i);
        }
        int[] result = null;
        for(int j = 0; j < nums.length; j++) {
            int firstNum = nums[j];
            int secondNum = target - firstNum;
            if(hashMap.containsKey(secondNum) && hashMap.get(secondNum) != j) {
                result = new int[2];
                result[0] = j;
                result[1] = hashMap.get(secondNum);
                break;
            }
        }
        return result;      
    }

方法二:

    public static int[] twoSum2(int[] nums, int target) {

        if(nums == null || nums.length == 0) return null;
        int[] result = null;
        for(int i = 0; i < nums.length; i++) {
            for(int j = i+1; j<nums.length; j++) {
                if(nums[i] + nums[j] == target) {
                    result = new int[2];
                    result[0] = i;
                    result[1] = j;
                    break;
                }
            }
        }
        return result;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容