python-leetcode练习3

(1)21.Merge Two Sorted Lists

题目:


分析:

创建两个变量分别同时指向值为0的结点,遍历比较l1和l2,将sum1下一个结点指向两者当前最小值的结点,然后l1或l2往下一个结点移动,sum1往下一个结点移动,最后将sum1的下一个结点指向两者中多出来的部分,最后返回final_sum的next。

代码:

class Solution:
    def mergeTwoLists(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """

        final_sum = ListNode(0)
        sum1 = final_sum

        while l1 and l2:

            if l1.val >= l2.val:
                sum1.next = l2
                l2 = l2.next
                
            else:
                sum1.next = l1
                l1 = l1.next
                
            sum1 = sum1.next

        sum1.next = l1 or l2

        return final_sum.next

(2)55.Jump Game

题目:


分析:

首先对nums列表长度进行判断,长度为0返回False,长度为1返回True,长度不是0和1,但是第一个元素最大步数为0返回False,从1到最大长度开始遍历比较最大步数,最大步数不能到达第i个结点,则返回False,否则取总最大步数和总最大步数+当前元素的最大步数的和的最大值,如果可以顺利到达最后一个点,则返回True。

代码:

class Solution:
    def canJump(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        length = len(nums)

        if length == 1:
        	return True
        if length == 0 or nums[0] == 0:
        	return False

        max_step = nums[0]

        for k in range(1,length):
        	if max_step < k:
        		return False
        	else:
        		max_step = max(max_step,nums[k]+k)

        return True


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值