java两数之和,输出下标,不用map
时间: 2024-12-28 19:38:21 浏览: 12
在Java中解决“两数之和”问题(即给定一个整数数组nums和一个目标值target,找出数组中两个数字相加等于目标值的下标),如果不需要使用哈希映射(Map),可以采用双指针法,通常称为“暴力搜索”策略。以下是基本思路:
1. 首先,我们初始化两个指针,一个指向数组的第一个元素(i),另一个指向最后一个元素(j)。
2. 接着,我们将这两个数相加,看它们是否等于目标值。如果等于,那么找到了一对解,直接输出当前的i和j;
3. 如果和小于目标值,说明第一个数小了,我们需要找一个较大的数来补足差额,因此将左指针i向右移动一位;
4. 同样,如果和大于目标值,说明第二个数大了,需要减去它,所以将右指针j向左移动一位。
5. 重复步骤2到4,直到两个指针相遇(i >= j)。如果没有找到符合条件的解,那么说明数组中不存在这样的两个数。
这是一个简单的线性时间复杂度O(n)的解决方案,适合于数据量不是特别大的情况。
```java
public int[] twoSum(int[] nums, int target) {
if (nums == null || nums.length < 2) return new int[0];
int i = 0;
int j = nums.length - 1;
while (i < j) {
int sum = nums[i] + nums[j];
if (sum == target) {
return new int[]{i, j}; // 返回两个解的下标
} else if (sum < target) {
i++;
} else {
j--;
}
}
return new int[0]; // 没有找到符合条件的解
}
```
阅读全文