题目:非降序数组
题目描述
写一个函数,传入两个非降序的整数数组(A, B),将 A, B 合并成一个非降序数组 C,返回 C(不要使用内置 sort 函数)。(测试用例仅做参考,我们会根据代码质量进行评分)
输入描述:
第一行输入两个整数n,m。(1<=n,m<=100000)分别表示数组A,B的大小。 第二行给出n个整数a。(1<=a<=10000) 第三行给出m个整数b。(1<=b<=10000)
输出描述:
输出合并之后排序好的数组。
示例
示例1
输入3 3
1 9 10
3 12 41复制
输出1 3 9 10 12 41
模板
# 请关闭中文输入法,用英文的字母和标点符号。
# 如果你想运行系统测试用例,请点击【执行代码】按钮,如果你想提交作答结果,请点击【提交】按钮,
# 注意:除答案外,请不要打印其他任何多余的字符,以免影响结果验证
# 本OJ系统是基于 OxCoder 技术开发,网址:www.oxcoder.com
# 模版代码提供基本的输入输出框架,可按个人代码习惯修改
class Solution:
def __init__(self) -> None:
pass
def solution(self, n, m, num1, num2):
result = None
# TODO: 请在此编写代码
result = []
i = j = 0
while i<n and j<m:
if num1[i]<num2[j]:
result.append(num1[i])
i += 1
else:
result.append(num2[j])
j += 1
result.extend(num1[i:])
result.extend(num2[j:])
return *result
if __name__ == "__main__":
arr_temp = [int(item) for item in input().strip().split()]
n = int(arr_temp[0])
m = int(arr_temp[1])
num1 = [int(item) for item in input().strip().split()]
num2 = [int(item) for item in input().strip().split()]
题解:
参考:Python解题 - CSDN周赛第20期 - 逆波兰 / 后缀表达式_请叫我问哥的博客-CSDN博客
思路与步骤:
1、按给定格式输入数据;
2、指定i,j分别为num1,num2的当前位置指针,
当满足num1[i] < num2[j]后加入result后,指针后移1位;
3、num1,num2中任意1个数组遍历完成后跳出循环,并保留指针位置。
4、将剩余未遍历的元素添加入result
5、输出list的全部元素
示例代码:
class Solution:
def __init__(self) -> None:
pass
def solution(self, n, m, num1, num2):
result = None
# TODO: 请在此编写代码
result = []
#i,j分别为num1,num2的当前位置指针,加入result后,指针后移1位,
i = j = 0
#num1,num2中任意1个数组遍历完成后跳出循环,并保留指针位置。
while i < n and j < m:
if num1[i] < num2[j]:
result.append(num1[i])
i += 1
else:
result.append(num2[j])
j += 1
#将剩余未遍历的元素添加入result
result.extend(num1[i:])
result.extend(num2[j:])
return result
if __name__ == "__main__":
arr_temp = [int(item) for item in input().strip().split()]
n = int(arr_temp[0])
m = int(arr_temp[1])
num1 = [int(item) for item in input().strip().split()]
num2 = [int(item) for item in input().strip().split()]
sol = Solution()
result = sol.solution(n, m, num1, num2)
#输出list的全部元素
print(*result)
PS: Python List extend()方法
引自:https://www.runoob.com/python/att-list-extend.html
描述
extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
语法
extend()方法语法:
list.extend(seq)
参数
- seq -- 元素列表。
返回值
该方法没有返回值,但会在已存在的列表中添加新的列表内容。
实例
以下实例展示了 extend()函数的使用方法:
#!/usr/bin/python
aList = [123, 'xyz', 'zara', 'abc', 123];
bList = [2009, 'manni'];
aList.extend(bList)
print "Extended List : ", aList ;
以上实例输出结果如下:
Extended List : [123, 'xyz', 'zara', 'abc', 123, 2009, 'manni']