1. 求两数和
给出一个整数数组,请在数组中找出两个加起来等于目标值的数,你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。注意:下标是从1开始的
public int[] twoSum (int[] numbers, int target) {
// write code here
Map<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < numbers.length; ++i){
if (map.containsKey(target - numbers[i])){
return new int[]{map.get(target - numbers[i]), i + 1};
}else map.put(numbers[i], i + 1);
}
return null;
}
2. 合并有序数组
给出两个有序的整数数组A和B,请将数组B合并到数组A中,变成一个有序的数组,假设A数组有足够的空间存放B数组的元素,A和B中初始的元素数目分别为m和n。
思路:由于两个数组都是有序的,所以只要按顺序比较A,B数组内元素大小即可。从数组的末尾出发,一个一个比较,将较大的数按顺序从后往前加入混合之后的数组末尾。
public class Solution {
public void merge(int A[], int m, int B[], int n) {
int index = m + n - 1;
while(m > 0 && n > 0){
A[index--] = (A[m-1] >= B[n-1]? A[--m]:B[--n]);
}
while(n > 0){
A[index--] = B[--n];
}
}
}
3. 螺旋矩阵
给定一个m x n大小的矩阵(m行&#