题解 | #合并两个有序的数组#

合并两个有序的数组

https://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665

坑点:
1. A会被预分配n个0在后边,len(A) 可能是大于m的
2. m和n都可能是0,这两种情况处理一下直接返回
思路:
1. 排除任一个数组长度为0的情况后,将A尾部的0全部pop掉,保证只剩下需要排序的元素
2. 遍历B
	- 若当前元素比A[0]还小,则插入A[0]位置
	- 若当前元素比A[-1]还大,则插入A[-1]位置
	- 否则遍历A,在A中找一个位置A[k],使得A[k] <= 当前元素,且A[k+1] >= 当前元素,插入后结束对A的遍历
class Solution:
    def merge(self , A, m, B, n):
        # write code here
        if m == 0:
            A[:n] = B[:n]
            return A
        elif n == 0:
            return A
        else:
            for i in range(n):
                A.pop()
            
            for i in range(n):
                if B[i] <= A[0]:
                    A.insert(0, B[i])
                elif B[i] >= A[-1]:
                    A.append(B[i])
                else:
                    for j in range(len(A)-1):
                        if A[j] <= B[i] and A[j+1] > B[i]:
                            A.insert(j+1, B[i])
                            break

全部评论
A[k+1] > 当前元素,写错了
点赞 回复 分享
发布于 2024-01-22 12:59 北京
不过 “A[k+1] >= 当前元素”在用例中也是可能出现的,比如A里已经有多个2了,现在又有一个2,用 >= 反而还能节约时间。
点赞 回复 分享
发布于 2024-01-22 13:01 北京

相关推荐

浪子陪都:简历最优秀的地方放到了后面,国奖,校级奖学金这些是最亮眼的。说明你跟同级别的学生不一样。 建议台灯这个,PCB布局布线这个词汇不专业,业内是PCB Layout,第二,单片机的板子一般不用考虑SI,PI 都是低速信号,只要遵循3W原则就好了。 单片机的项目太low了,技能这块,你要看一下BOSS直聘的招聘要求,按照别人的要求写,一些关键词可以增加你简历被检索到的概率。 主修课程不用写,这个没有人去关注的。
点赞 评论 收藏
分享
Cassifa:发的字比你都多的一律视为骗子或者想白嫖压榨实习生的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客企业服务