JAVA
① 暴力
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] ans = new int[2];
for (int i = 0; i < nums.length - 1; i++) {
for (int j = i + 1; j < nums.length; j++) {
if (nums[i] + nums[j] == target) {
ans[0] = i;
ans[1] = j;
return ans;
}
}
}
return ans;
}
}
② 排序+双指针
import java.util.Arrays;
class Solution {
public int[] twoSum(int[] nums, int target) {
int n = 0, m = 0;
int[] ans = new int[2];
int[] tmp = new int[nums.length];
System.arraycopy(nums, 0, tmp, 0, nums.length);
Arrays.sort(nums);
for (int i = 0, j = nums.length - 1; i < nums.length - 1; ) {
if (nums[i] + nums[j] == target) {
n = i;
m = j;
break;
} else if (nums[i] + nums[j] < target) i++;
else j--;
}
int i = 0;
for (i = 0; i < nums.length; i++) {
if (tmp[i] == nums[n]) {
ans[0] = i;
break;
}
}
for (int k = 0; k < nums.length; k++) {
if (tmp[k] == nums[m] && i != k) {
ans[1] = k;
break;
}
}
return ans;
}
}
③ 哈希
import java.util.Arrays;
import java.util.HashMap;
class Solution {
public int[] twoSum(int[] nums, int target) {
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
if(map.containsKey(target-nums[i])) {
return new int[] {map.get(target-nums[i]),i};
}
map.put(nums[i],i);
}
return new int[] {-1,-1};
}
}
Python
① 暴力
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i in range(len(nums)):
for j in range(i+1, len(nums)):
if nums[i]+nums[j] == target:
return [i, j]
return []
'''
List = [2, 7, 11, 15]
target = 9
so = Solution()
print(so.twoSum(List, target))
'''
② 排序+双指针
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
temp = nums.copy()
temp.sort()
i = 0
j = len(nums)-1
while i < j:
if (temp[i]+temp[j]) > target:
j = j-1
elif (temp[i]+temp[j]) < target:
i = i+1
else:
break
p = nums.index(temp[i])
nums.pop(p)
k = nums.index(temp[j])
if k >= p:
k = k+1
return [p, k]
③ 哈希
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashset = {}
for i in range(len(nums)):
if hashset.get(target-nums[i]) is not None:
return [hashset.get(target-nums[i]), i]
hashset[nums[i]] = i
python字典的用法