JavaScript 合并排序数组
题目描述:合并两个有序的数组
地址:https://leetcode.com/problems/merge-sorted-array/description/
限定条件:不允许使用遍历或者 sort 方法
思路:
合并后的数组总的有效数目为 m+n,因为都是从0开始,所以 nums1 和 nums2 的最后一个元素的索引分别是 m-1 和 n-1,合并后的 nums1 的最后一个元素的索引应该是 m+n-1。
依次对数组 nums1 尾部(即从确定大数开始)和 nums2 尾部(最大数)进行比较,大的那一个数移除并去填补新数组的尾部。
// 把 arr2 合并到 arr1 中
function merge(arr1, arr2) {
let len1 = arr1.length;
let len2 = arr2.length;
let i = len1 - 1;
let j = len2 - 1;
let position = len1 + len2 - 1;
while(j >= 0 && i >= 0) {
arr1[position--] = arr1[i] > arr2[j] ? arr1[i--] : arr2[j--];
}
return arr1;
}
merge([1,4,5],[1,2,8,9])
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论