Leecode 合并两个有序数组
Day 2 刷题
未ac,力扣官方解题思路:利用双指针来把数组更新重载到新数组sorted内
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int p1 = 0, p2 = 0;
// refining the sorted array
int[] sorted = new int[m+n];
int cur;
// all has been Traverse
while(p1<m||p2<n){
if (p1==m){
// str1 has already been traversed
cur = nums2[p2++];
}else if(p2==n){
cur = nums1[p1++];
}else if(nums1[p1]<nums2[p2]){
cur = nums1[p1++];
}else{
cur = nums2[p2++];
}
sorted[p1+p2-1] = cur;
}
for (int i=0;i<m+n;++i){
nums1[i] = sorted[i];
}
}
}
评论区众吐槽赖皮的方法:把数组2 concatenate到数组1结尾,在使用数组的sort方法...
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
for (int i = 0; i != n; ++i) {
nums1[m + i] = nums2[i];
}
Arrays.sort(nums1);
}
}
补充:Array类的常用方法:Arrays.fill(arr,4);//给所有值赋值4,Arrays.sort(arr,0,3);//给第0位(0开始)到第3位(不包括)排序,忽略大小写:Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);
浙公网安备 33010602011771号