双指针练习:求满足条件的两个数之和题目描述:给定一个有序数组(数组是递增的),如数组arr = {1,4,5,7,9};找两个数之和为12,找到一组即可停止。用java语言
时间: 2024-02-12 13:05:44 浏览: 29
可以使用双指针的方法来解决这道题目,时间复杂度为O(n)。具体实现如下:
```java
public static int[] findTwoNumbers(int[] arr, int target) {
int left = 0;
int right = arr.length - 1;
while (left < right) {
int sum = arr[left] + arr[right];
if (sum == target) {
return new int[] {arr[left], arr[right]};
} else if (sum < target) {
left++;
} else {
right--;
}
}
return new int[] {}; // 如果找不到,则返回空数组
}
```
在上面的代码中,我们使用两个指针 `left` 和 `right` 分别指向数组的第一个元素和最后一个元素。如果两个指针指向的元素之和等于目标值 `target`,则返回这两个元素,否则根据和与目标值的大小关系移动指针。
下面是一个测试例子:
```java
public static void main(String[] args) {
int[] arr = {1, 4, 5, 7, 9};
int target = 12;
int[] result = findTwoNumbers(arr, target);
if (result.length == 2) {
System.out.println(result[0] + " + " + result[1] + " = " + target);
} else {
System.out.println("找不到满足条件的两个数之和!");
}
}
```
输出结果为:
```
3 + 9 = 12
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)