- 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

京公网安备 11010502036488号