leetcode学習記録12--167。二つの数及びII

leetcode学習記録12

二つの数およびII

難易度:簡単

所与の順序付けられた配列は、それらの合計が目標数の和に等しくなるように2つの数値を見つけるために応じて昇順にソートされています。

関数は、インデックス1のINDEX2未満でなければならない2つのインデックス値からindex1のINDEX2を返す必要があります。

説明:

インデックス(index1と、INDEX2と)の戻り値はゼロではありません。
あなたは、各入力のみ唯一の答えに対応すると仮定することができますが、同じ要素を再利用することはできません。
例:

入力:番号= 2、7、 11、15]、目標= 9
出力:[1,2]
説明:2および7は、ターゲット番号9の和に等しいです。したがってインデックス1 = 1、INDEX2 = 2。

出典:滞在ボタン(LeetCode)
リンクします。https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted
すべてのネットワークからの控除が著作権を保有。商業転載は、ソースを明記してください許可公式、非商用の転載をご連絡ください。

問題解決のためのアイデア

1.暴力、2サイクル、及び2つのターゲットを見つける
シフトが少ないヘッドポインタを超える場合2.二重ポインタ、頭部と尾部、及び目標と比較し、テール・ポインタは、予めより大きい場合、出力は同じです

コード

//方法一
class Solution {
    public int[] twoSum(int[] numbers, int target) {
        for(int i = 0; (numbers[i] <= target)&&(i < numbers.length-1); i++){
            for(int j = i+1; j < numbers.length; j++){
                if(numbers[i] + numbers[j] == target){
                   return new int[]{i + 1, j + 1}; 
                }
            }
        }
        return null;
    }
}

//方法二
class Solution {
        int right = 0;
        int left = numbers.length-1;
        while(right < left){
            if(numbers[right] + numbers[left] ==target){
                return new int[]{right + 1, left + 1};
            }
            else if(numbers[right] + numbers[left] < target){
                right++;
            }
                else{
                    left--;
                }
        }
        return null;
    }
}

概要

公開された12元の記事 ウォンの賞賛0 ビュー129

おすすめ

転載: blog.csdn.net/yqzsszl/article/details/103933328