Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
点击 这里 可以查看更多算法面试相关内容~
一、题目描述:
输入一个递增排序的数组array和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,返回任意一组即可,如果无法找出这样的数字,返回一个空数组即可。
二、思路分析:
有序数组 前后两个指针指向头元素和尾元素,判断
三、AC 代码:
package cn.com.codingce.双指针.和为S的两个数字;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) {
System.out.println(new Solution().FindNumbersWithSum(new int[]{1, 2, 4, 3, 9}, 3));
}
public ArrayList<Integer> FindNumbersWithSum(int [] array, int sum) {
ArrayList<Integer> ret = new ArrayList<>();
int left = 0, right = array.length - 1;
while (left < right) {
if (sum == array[left] + array[right]) {
ret.add(array[left]);
ret.add(array[right]);
return ret;
} else if (sum > array[left] + array[right]) {
left++;
} else {
right--;
}
}
return ret;
}
}
总结
一点一滴