mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
Update 0001.两数之和.md
增加java语言版本的双指针法
This commit is contained in:
@ -133,6 +133,7 @@ public:
|
||||
### Java:
|
||||
|
||||
```java
|
||||
//使用哈希表
|
||||
public int[] twoSum(int[] nums, int target) {
|
||||
int[] res = new int[2];
|
||||
if(nums == null || nums.length == 0){
|
||||
@ -151,6 +152,43 @@ public int[] twoSum(int[] nums, int target) {
|
||||
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:
|
||||
(版本一) 使用字典
|
||||
|
Reference in New Issue
Block a user