(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