- 1、题目描述:
- 2、题目链接:
https://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665?tpId=117&&tqId=34943&rp=1&ru=/ta/job-code-high&qru=/ta/job-code-high/question-ranking
-3、 设计思想:
详细操作流程看下图:
-4、视频讲解链接B站视频讲解
-5、代码:
c++版本:
class Solution { public: void merge(int A[], int m, int B[], int n) { //因为题目明确说了A数组足够大,所以直接在A数组操作 int i = m - 1; int j = n - 1; int index = m + n - 1;//AB合并后最后一个元素所在位置 while(i >= 0 && j>= 0)//AB合并,谁大就先放谁 A[index --] = A[i] > B[j] ? A[i --] : B[j --]; while(j >= 0)//如果B没有遍历完,那么之间丢在A数组里面 A[index--] = B[j --]; } };
Java版本:
public class Solution { public void merge(int A[], int m, int B[], int n) { //因为题目明确说了A数组足够大,所以直接在A数组操作 int i = m - 1; int j = n - 1; int index = m + n - 1;//AB合并后最后一个元素所在位置 while(i >= 0 && j >= 0)//AB合并,谁大就先放谁 A[index --] = A[i] > B[j] ? A[i --] : B[j --]; while(j >= 0)//如果B没有遍历完,那么之间丢在A数组里面 A[index --] = B[j --]; } }
Python版本:
# # # @param A int整型一维数组 # @param B int整型一维数组 # @return void # class Solution: def merge(self , A, m, B, n): # write code here #因为题目明确说了A数组足够大,所以直接在A数组操作 i = m - 1 j = n - 1 index = m + n - 1#AB合并后最后一个元素所在位置 while i>= 0 and j >= 0:#AB合并,谁大就先放谁 if A[i] > B[j]: A[index] = A[i] index-=1 i-=1 else: A[index] = B[j] index-=1 j-=1 while j>= 0: A[index] = B[j] index -=1 j -= 1