python3合并两个有序列表 and 加一

python3合并两个有序列表 and 加一

21.合并两个有序列表点此做题

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

在这里插入图片描述

示例 1:

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例 2:

输入:l1 = [], l2 = []
输出:[]
示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

常规思路:

# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
    def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
        new_list = ListNode(-1,None)
        head = new_list
        while l1 and l2:
            if l1.val<l2.val:
                new_list.next = l1
                new_list=new_list.next
                l1=l1.next
            else:
                new_list.next = l2
                new_list=new_list.next
                l2=l2.next
        if l1:
            new_list.next = l1
        if l2:
            new_list.next = l2
        return head.next

递归思路

if not l1: return l2  # 终止条件,直到两个链表都空
        if not l2: return l1
        if l1.val <= l2.val:  # 递归调用
            l1.next = self.mergeTwoLists(l1.next,l2)
            return l1
        else:
            l2.next = self.mergeTwoLists(l1,l2.next)
            return l2
  1. 加一
    给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。
示例 2:

输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。
示例 3:

输入:digits = [0]
输出:[1]

思路1:字符串和整型相互转然后+1,思路简单,但是耗用内存

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        str1 = ''
        lst = []
        for i in digits:
            str1 += str(i)
        str1 = str(int(str1)+1)
        for i in str1:
            lst.append(int(i))
        return lst

在这里插入图片描述
思路2:直接操作;将最后一位加一,然后判断是否需要进位,以及考虑最坏情况

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
		addone = 0
        digits[-1] += 1
        for i in range(len(digits)-1,-1,-1):
            if addone == 1:
                digits[i] += addone
                addone = 0
            if digits[i] == 10:
                digits[i] = 0
                addone = 1
            else:
                return digits
        if digits[0] == 0:
            digits.insert(0, 1)
            return digits 

思路3:

newlst = []
        while digits and digits[-1] == 9:
            digits.pop()
            newlst.append(0)
        if not digits:
            return [1] + newlst
        else:
            digits[-1] += 1
            return digits + newlst

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100090.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • git的安装和配置

    git的安装和配置

    2021年10月16日
  • 工厂模式 Factory Method[通俗易懂]

    工厂模式 Factory Method[通俗易懂]工厂模式 Factory Method动机模式定义实例结构图要点总结笔记动机在软件系统中,经常面临着创建对象的工作,由于需求的变换,需要创建的对象的具体类型经常变换。如何应对这种变换?如何绕过常规的对象创建方法(new),提供一种”封装机制“来避免客户程序和这种”具体对象创建工作“的紧耦合模式定义定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟(目的:解耦,手段:虚函数)到子类实例朴素class ISplitter{public:

  • AVL树—-java

    AVL树—-java

  • ListCtrl控件[建议收藏]

    一CListCtrl类型LVS_EDITLABELSLVS_OWNERDRAWFIXEDLVS_REPORTLVS_SHOWSELALWAYSLVS_SINGLESELLVS_SMALL

    2021年12月18日
  • MAC 如何配置allure的环境变量「建议收藏」

    MAC 如何配置allure的环境变量「建议收藏」1、下载2.7版本allure:https://dl.bintray.com/qameta/generic/io/qameta/allure/allure/2.7.0/allure-2.7.0.zip2、配置allure的环境变量:(1)、解压已经下载的安装包:(2)、选中allure-2.7.0,右键->显示简介:查看位置信息(如果直接在下载文件夹没有,默认为:/Users…

  • 视频要不要开hdr_hdr在什么情况下使用

    视频要不要开hdr_hdr在什么情况下使用最近两年HDR这个概念可谓是铺天盖地而来,手机也好PC也好电视也好,都拼命往自己头上扣HDR的帽子。而在某些发烧友眼中,如果看片子不带HDR,堪比步兵变骑兵,一下子变得索然无味。然而,新事物往往也伴随着众多新坑,特别是在软硬件环境复杂的PC平台,稍有不慎就会摔得脸青鼻肿,播HDR的效果甚至不如播普通的片子。PC播HDR的大坑有几何?PC并不是专门为视频播放设计的机器,和专业的蓝光机等播放器相比…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号