python-leetcode练习3

(1)21.Merge Two Sorted Lists

题目:

python-leetcode练习3_第1张图片

分析:

创建两个变量分别同时指向值为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

题目:

python-leetcode练习3_第2张图片

分析:

首先对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


你可能感兴趣的:(python-leetcode练习3)