ソードフィンガーオファーインタビュー質問57:合計はsの数です

この質問では、2つの配列インデックスポインタindex_pとindex_lを設定します。1つは先頭を指し、もう1つは末尾を指します。これは、指定された配列がすべて正の数であり、小さいものから大きいものへと並べ替えられるためです。つまり、最初に対応する2つの数値の合計を計算するときに、指定された値より大きい場合は、テールポインターを前方に移動し、合計の状態が変化するまで計算を続行できます。等しい場合は、直接出力します。 ;より小さい場合、ヘッドポインタは前方に移動します。

私のコード、5分直接秒はまだ答えと同じなので、かっこいいです。

    public int[] twoSum(int[] nums, int target) {
        int index_p = 0;
        int index_l = nums.length - 1;
        while(index_p<index_l){
            if(nums[index_p] + nums[index_l] == target){
                return new int[]{nums[index_l],nums[index_p]};
            }else if(nums[index_p] + nums[index_l] > target){
                index_l--;
            }else if(nums[index_p] + nums[index_l] < target){
                index_p++;
            }
        }
        return null;
    }

 

おすすめ

転載: blog.csdn.net/qq_40473204/article/details/115027731