方法一:数组
class Solution {
int a[]=new int[2];
public int[] twoSum(int[] nums, int target) {
for(int i=0;i<nums.length;i++)
{
for(int j=i+1;j<nums.length;j++)
{
if(nums[i]+nums[j]==target)
{
for(int k=0;k<=1;k++)
{
if(k==0)
a[k]=i;
else
a[k]=j;
}
break;
}
}
}
return a;
}
}
方法二:哈希表
//解题思路: 利用hash表的特性 , target - nums[i] 是否存在, 如果存在 , 则取出返回, 如果不存在 ,则进行存储
class Solution {
public int[] twoSum(int[] nums, int target) {
if (Objects.isNull(nums) || nums.length == 0) return null;
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int curNum = target - nums[i];
//是否存在 target - nums[i]的值
if (map.containsKey(curNum)) {
return new int[]{map.get(curNum), i};
}
//不存在 , 则进行存储
map.put(nums[i], i);
}
return null;
}
}
|