Likou Brush Hundred Days Plan Day7 2つの数値の合計II-入力順序付き配列C#

学習目標:

私はあなたに異なる思考の拡張をもたらすことを望んで、私のユニークなアルゴリズムのアイデアを更新し続けます!
役に立ったら、いいね、フォロー、サポートしてください!
あなたの励ましは私を動かし続けるものです!

歴口質問銀行質問167公式リンク

学習コンテンツ:

2つの数値の合計II-入力ソートされた配列

给定一个已按照 非递减顺序排列  的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。

函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。

你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。

例1:

入力:数値= [2,7,11,15]、ターゲット= 9
出力:[1,2]
説明:2と7の合計はターゲット数値9に等しくなります。したがって、index1 = 1、index2=2です。
例2:

入力:数値= [2,3,4]、ターゲット= 6
出力:[1,3]
例3:

入力:数値= [-1,0]、ターゲット= -1
出力:[1,2]

提示:

2 <= numbers.length <= 3 * 104
-1000 <= numbers[i] <= 1000
numbers 按 非递减顺序 排列
-1000 <= target <= 1000
仅存在一个有效答案

ソース:LeetCode
リンク:https ://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted

勉強の時間:

2022.1.16


学習出力:

アイデア1
ここに画像の説明を挿入

問題解決のアイデア
ベースアドレスラウンドロビン

1.最初にベースアドレスを決定し、次にベースアドレスの背後にあるすべてのインデックスをトラバースし、毎回2つの値を追加して、見つかった場合は、

public class Solution {
    
    
    public int[] TwoSum(int[] numbers, int target) {
    
    
        for(int i=0;i<numbers.Length;i++){
    
    
            for(int j=i+1;j<numbers.Length;j++){
    
    
                if(numbers[i]+numbers[j]==target){
    
    
                    return new int[]{
    
    i + 1, j + 1};
                }
            }
        }
        return new int[]{
    
    0, 0};
    }
}

アイデア2
ここに画像の説明を挿入

問題解決のアイデア
ダブルポインター法

1.最初に左ポインターと右ポインターを判別し、次に2つのポインターが指すインデックスの値が目標値であるかどうかを判別します。目標値より大きい場合は、右ポインターを左に移動し、目標値よりも小さい場合は、左ポインタを右に移動します

public class Solution {
    
    
    public int[] TwoSum(int[] numbers, int target) {
    
    
        if (numbers == null) return null;
        int i = 0, j = numbers.Length - 1;
        while (i < j) {
    
    
            int sum = numbers[i] + numbers[j];
            if (sum == target) {
    
    
                 return new int[]{
    
    i + 1, j + 1};
            } else if (sum < target) {
    
    
                i++;
            } else {
    
    
                j--;
        }
    }
        return null;
    }
}

著者:モルモットXiaohuihui
著作権は著者に帰属します。商用の再版については、著者に連絡して許可を求め、非商用の再版については、出典を示してください。

おすすめ

転載: blog.csdn.net/m0_48781656/article/details/122530262