首页 > 代码库 > Leetcode:merge_sorted_array
Leetcode:merge_sorted_array
一、 题目
将给定的两个排好序的数组合并成一个有序数组。
二、 分析
看到题目后感觉很简单,就是比较两个数组中的元素嘛,但是刚开始发现如果合并到A[]中从前到后的话可能会导致原数据该,怎样才能避免这种错误呢?于是想到了逆向合并,从后往前填入数组。
class Solution { public: void merge(int A[], int m, int B[], int n) { int length=m+n-1; m--; n--; for(int i=length;i>=0;i--){ if (m == -1 || (n != -1 && A[m] <= B[n])) { A[i] = B[n--]; } else { A[i] = A[m--]; } } } }; class Solution { public: void merge(int A[], int m, int B[], int n) { int length=m+n-1; int i=m-1; int j=n-1; while (i >= 0 && j >= 0) A[length--] = A[i] > B[j] ? A[i--] : B[j--] ; while (i >= 0) A[length--] = A[i--] ; while (j >= 0) A[length--] = B[j--] ; } };
Leetcode:merge_sorted_array
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。