class Solution {
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){
return new int[]{i,j};
}
}
}
return new int[0];
}
}
哈希表
class Solution {
public int[] twoSum(int[] nums, int target) {
Map <Integer,Integer>hashtable = new HashMap<Integer,Integer>();
for (int i = 0; i < nums.length; ++i){
if (hashtable.containsKey(target - nums[i])){
return new int[]{hashtable.get(target - nums[i]),i};
}
hashtable.put(nums[i],i);
}
return new int[0];
}
}
704.二分查找
简单的数组二分查找,只要搞清循环的边界和左右指针的替换规则即可
class Solution {
public int search(int[] nums, int target) {
if (target < nums[0] || target > nums[nums.length - 1]) {return -1;}
int left = 0, right = nums.length - 1;
while (left <= right) {
int mid = (left + right) >> 1;
if (nums[mid] == target) {return mid;}
else if (nums[mid] < target) {left = mid + 1;}
else { right = mid - 1;}
}
return -1;
}
}