JZ42-和为S的两个数字
和为S的两个数字
https://www.nowcoder.com/practice/390da4f7a00f44bea7c2f3d19491311b?tpId=13&tags=&title=&diffculty=0&judgeStatus=0&rp=1&tab=answerKey
class Solution {
public ArrayList<Integer> FindNumbersWithSum(int[] array, int sum) {
ArrayList<Integer> list = new ArrayList<>();
if (array == null || array.length == 0) {
return list;
}
for (int i = 0; i < array.length - 1; i++) {
for (int j = i + 1; j < array.length; j++) {
if (array[j] == sum - array[i]) {
list.add(array[i]);
list.add(array[j]);
return list;
}
}
}
return list;
}
}
class Solution2 {
public ArrayList<Integer> FindNumbersWithSum(int[] array, int sum) {
ArrayList<Integer> list = new ArrayList<>();
if (array == null || array.length == 0) {
return list;
}
HashSet<Integer> set = new HashSet<>();
for (int a : array
) {
set.add(a);
}
for (int i = 0; i < array.length - 1; i++) {
if (set.contains(sum - array[i])) {
list.add(array[i]);
list.add(sum - array[i]);
return list;
}
}
return list;
}
}
//二分查找
class Solution3 {
public ArrayList<Integer> FindNumbersWithSum(int[] array, int sum) {
ArrayList<Integer> list = new ArrayList<>();
if (array == null || array.length <= 1) {
return list;
}
int left = 0;
int right = array.length - 1;
while (left < right) {
if (array[left] + array[right] == sum) {
list.add(array[left]);
list.add(array[right]);
return list;
}
if (array[left] + array[right] < sum) {
left++;
} else {
right--;
}
}
return list;
}
}
叮咚买菜工作强度 193人发布