归并排序:mergeSort 附赠一道LeetCode练习题 -_- -_- -_-

def merge(a,b):
  c=[]
  l,r=0,0
  while l<len(a) and r<len(b):
    if a[l]<b[r]:
      c.append(a[l])
      l+=1
    elif a[l]>b[r]:
      c.append(b[r])
      r+=1
  if l==len(a):
    c+=b[r:]
  else:
    c+=a[l:]
  return c

def mergeSort(nums):
  if len(nums)<2:
    return nums
  mid=len(nums)//2
  left=mergeSort(nums[:mid])
  right=mergeSort(nums[mid:])
  return merge(left,right)
a=[3,2,4,1,5,7,6]
print(mergeSort(a))

148.排序链表
leetcode 练习题


class Solution(object):
    def merge(self,l1,l2):
        l=ListNode(0)
        p=l
        while l1 and l2:
            if l1.val<l2.val:
                p.next=l1
                l1=l1.next
            else:
                p.next=l2
                l2=l2.next
            p=p.next
        p.next=l1 or l2
        return l.next
    def sortList(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        if head==None or head.next==None:
            return head
        slow,fast=head,head
        while fast and fast.next:
            prev=slow
            slow=slow.next
            fast=fast.next.next
        prev.next=None
        l1=self.sortList(head)
        l2=self.sortList(slow)
        return self.merge(l1,l2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值