Update 0001.两数之和.md

增加java语言版本的双指针法
This commit is contained in:
Heeqw
2024-01-29 23:39:32 +08:00
committed by GitHub
parent abc86e9a7d
commit 586b8efd38

View File

@ -133,6 +133,7 @@ public:
### Java ### Java
```java ```java
//使用哈希表
public int[] twoSum(int[] nums, int target) { public int[] twoSum(int[] nums, int target) {
int[] res = new int[2]; int[] res = new int[2];
if(nums == null || nums.length == 0){ if(nums == null || nums.length == 0){
@ -151,6 +152,43 @@ public int[] twoSum(int[] nums, int target) {
return res; return res;
} }
``` ```
```java
//使用双指针
public int[] twoSum(int[] nums, int target) {
int m=0,n=0,k,board=0;
int[] res=new int[2];
int[] tmp1=new int[nums.length];
//备份原本下标的nums数组
System.arraycopy(nums,0,tmp1,0,nums.length);
//将nums排序
Arrays.sort(nums);
//双指针
for(int i=0,j=nums.length-1;i<j;){
if(nums[i]+nums[j]<target)
i++;
else if(nums[i]+nums[j]>target)
j--;
else if(nums[i]+nums[j]==target){
m=i;
n=j;
break;
}
}
//找到nums[m]在tmp1数组中的下标
for(k=0;k<nums.length;k++){
if(tmp1[k]==nums[m]){
res[0]=k;
break;
}
}
//找到nums[n]在tmp1数组中的下标
for(int i=0;i<nums.length;i++){
if(tmp1[i]==nums[n]&&i!=k)
res[1]=i;
}
return res;
}
```
### Python ### Python
(版本一) 使用字典 (版本一) 使用字典