この質問では、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;
}