LeetCodeアルゴリズムの問題 - 二つの数字

襟のボタンのアルゴリズムの問​​題 - 二つの数字

質問

整数配列NUMSと目標値の目標を考えると、配列内の2つの整数の目標値を特定し、その配列の添字に戻るにお願いします。
あなたは、各入力が一つだけ答えに対応することを想定することができます。ただし、同じ配列要素を再使用することはできません。

所与NUMS = [2、7、11 、15]、目標= 9
ためNUMS [0] + NUMS [1 ] = 2 + 7 = 9
返される[0,1]


トピックソリューション

解決策1:強引な方法

class Solution {
    public int[] twoSum(int[] nums, int target) {
        int[] targetArray = new int[2];
        for(int i = 0; i < nums.length - 1; ++i){
            for(int j = i + 1; j < nums.length; ++j){
                if(nums[i] + nums[j] == target){
                    targetArray[0] = i;
                    targetArray[1] = j;
                    return targetArray;
                }
            }
        }
        return null;
    }
}

次のように実行結果は以下のとおりです。
ここに画像を挿入説明

解決策2:HashMapを通過することにより、

class Solution {
public int[] twoSum(int[] nums, int target) {
    int[] targetArray = new int[2];
    int reduce = 0;
    HashMap<Integer, Integer> map = new HashMap<>();
    for(int i = 0; i < nums.length; ++i){
        reduce = target - nums[i];
        if(map.containsKey(reduce)){
            targetArray[0] = i;
            targetArray[1] = map.get(reduce);
            return targetArray;
            }
        map.put(nums[i], i);
        }
        return null;
    }
}

次のように実行結果は以下のとおりです。
ここに画像を挿入説明


リリース元の2件の記事 ウォンの賞賛0 ビュー173

おすすめ

転載: blog.csdn.net/wuyusen123456/article/details/104586742