python 找出合并并排序两个有序列表后的第n个最小元素

编写一个程序,找出合并并排序两个有序列表后的第n个最小元素。

  • 定义函数find_smallest_number(),该函数接受三个参数:两个列表和一个整数n
  • 假设输入的列表始按升序排序
  • 在函数内部,按升序合并两个列表。
  • 然后,从列表中找出第n个最小元素并返回。
  • 在函数外部打印第n个最小元素。

例如,对于列表[4, 9, 11][3, 5, 7]。它的第4个最小元素是7。 这是因为如果按升序合并列表,将得到[3, 4, 5, 7, 9, 11]。因此,第4个最小元素是7




# 用你的代码替换___

def find_smallest_number(nums1, nums2, n):
    i = 0
    i1 = 0
    i2 = 0
    l1=len(nums1)
    l2=len(nums2)    
    res = -1
    while i1<l1 and i2<l2:
        if nums1[i1]<nums2[i2]:
            res=nums1[i1]
            i1+=1
            i+=1            
        elif nums1[i1]>nums2[i2]:
            res=nums2[i2]
            i2+=1
            i+= 1
        else:
            res=nums2[i2]
            i1+=1
            i2+=1
            i+=2

        if i >= n:
            return res
    
    while i1<l1:    
        res=nums1[i1]
        i1+=1
        i+=1            
        
        if i >= n:
            return res

    while i2<l2:    
        res=nums2[i2]
        i2+=1
        i+=1            
        
        if i >= n:
            return res
    
    






# 接收整数输入并转换为列表
nums1 = list(map(int, input().split()))

# 接收整数输入并转换为列表
nums2 = list(map(int, input().split()))

# 接收整数输入
n = int(input())

result = find_smallest_number(nums1, nums2, n)

print(result)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值