88 Merge Sorted Array
Given two sorted integer arrays A and B, merge B into A as one sorted array.
Note:
You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are mand n respectively.
题目大概的意思就是给出两个已经排序好的数组,合并这两个数组并要求仍然有序。
1 class Solution { 2 public: 3 void merge(int A[], int m, int B[], int n) { 4 int i,j,k; 5 for(k=m+n-1,i=m-1,j=n-1;k>=0;k--){ 6 if((A[i]>B[j]||j<0)&&(i>=0)){ 7 A[k]=A[i--]; 8 }else{ 9 A[k]=B[j--]; 10 } 11 } 12 } 13 };
代码比较简单,简单的说一下思路,
新数组的长度是m+n,从新数组的最后一个元素开始循环插入数组
if((A[i]>B[j]||j<0)&&(i>=0)) 这句代码可以这样理解,对应着两种情况:
情况一 如果数组A当前下标的元素大于数组B当前下标的元素并且数组A没有循环结束
情况二 如果数组B的元素已经循环完而数组A的元素还没有循环完
这两种情况下就将元素保存到新的数组A中。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步