class Solution0 {
public int[] twoSum(int[] nums, int target) {
for(int i=0;i<nums.length-1;i++)
for (int j=i+1;j<nums.length;j++)
if(nums[i]+nums[j]==target)
return new int[]{i,j};
return null;
}
}
class Solution1 {
public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map = new HashMap<>();
for (int i=0;i<nums.length;i++){
map.put(nums[i],i);
}
for (int i=0;i<nums.length;i++){
int complement=target-nums[i];
if(map.containsKey(complement)&&map.get(complement)!=i){
return new int[]{i,map.get(complement)};
}
}
return null;
}
}
class Solution3 {
public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map = new HashMap<>();
for (int i=0;i<nums.length;i++){
int complement = target - nums[i];
if (map.containsKey(complement)){
return new int[]{map.get(complement),i};
}
map.put(nums[i],i);
}
return null;
}
}
class Solution{
public int[] twoSum(int[] nums, int target) {
int volumn = 2048;
int bitmode = volumn-1;
int[] homemadeHash = new int[volumn];
for (int i = 0;i<nums.length;i++){
int complement = target -nums[i];
if(homemadeHash[complement&bitmode]!=0){
return new int[]{i,homemadeHash[complement&bitmode]-1};
}
homemadeHash[nums[i]&bitmode]=i+1;
}
return null;
}
}