最近很迷茫,甲方没有经费二开项目了。估计合同到期这项目就被砍了,(项目经理已经被砍了)感觉合同到期也要被裁。听说朋友说现在工作不怎么好找,分享一道朋友前几天的面试算法题。
给你两个递增的整数数组 nums1
和 nums2
,另有两个整数 m
和 n
,分别表示nums1
和 nums2
中的元素数目。请你 合并 nums2
到 nums1
中,使合并后的数组同样按递增排列。
public static int[] merge(int[] nums1, int m, int[] nums2, int n) {
int p1 = m - 1; // nums1数组的有效元素末尾索引
int p2 = n - 1; // nums2数组的末尾索引
int p = m + n - 1; // 合并后的数组的末尾索引
int[] result = new int[m + n];
// 从后往前遍历,将较大的元素依次放入合并后的数组的末尾
while (p1 >= 0 && p2 >= 0) {
if (nums1[p1] >= nums2[p2]) {
result[p] = nums1[p1];
p1--;
} else {
result[p] = nums2[p2];
p2--;
}
p--;
}
// 如果nums2中还有剩余元素,将其依次放入合并后的数组的前面
while (p2 >= 0) {
result[p] = nums2[p2];
p2--;
p--;
}
// 如果nums1中还有剩余元素,将其依次放入合并后的数组的前面
while (p1 >= 0) {
result[p] = nums1[p1];
p1--;
p--;
}
return result;
}
总体思路就是倒着去比较,还是比较简单的。其实这种简单的题目好像没啥必要发博客记录,但是很想发一篇,感叹下市场。诶~~~~~~~~~~~~~~~~~~