leetcode5

Swap Nodes in Pairs

还是设置一个头结点比较好操作,直接操作不太顺利。。。

class Solution(object):
    def swapPairs(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        if head is None or head.next is None:
            return head
        dummy = ListNode(0); dummy.next = head
        p = dummy
        while p.next and p.next.next:
            tmp = p.next.next
            p.next.next = tmp.next
            tmp.next = p.next
            p.next = tmp
            p = p.next.next
        return dummy.next

Reverse Nodes in k-Group

class Solution(object):
    def reverseKGroup(self, head, k):
        """
        :type head: ListNode
        :type k: int
        :rtype: ListNode
        """
        if head is None or head.next is None:
            return head
        dummy=ListNode(0);dummy.next=head
        p=dummy
        s=[None for i in range(k)]
        while True:
            temp=0
            tmp=p
            for i in range(k):
                if tmp==None or tmp.next==None:
                    temp+=1
                    break
                tmp=tmp.next
            if temp>0:
                break
            else:
                q=p
                for i in range(k):
                    s[i]=q.next
                    q=q.next
                s[0].next=s[k-1].next
                for i in range(k-1,0,-1):
                    s[i].next=s[i-1]
                p.next=s[k-1]
                p=s[0]
        return dummy.next

Remove Duplicates from Sorted Array

有一条要求是 不要为另一个数组分配额外的空间,您必须使用常量内存来执行此操作。

class Solution(object):
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if len(nums)==0:
            return 0
        j=0
        for i in range(len(nums)):
            if nums[i]!=nums[j]:
                nums[i],nums[j+1]=nums[j+1],nums[i]
                j+=1
        print nums
        return j+1

Remove Element

去掉数组中等于val的元素,返回新的数组长度,数组中的元素不必保持原来的顺序。使用头尾指针,头指针碰到val时,与尾指针指向的元素交换,将elem都换到数组的末尾去。

class Solution(object):
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        if len(nums)==0:
            return 0
        j=len(nums)-1
        for i in range(len(nums)-1,-1,-1):
            if nums[i]==val:
                nums[i],nums[j]=nums[j],nums[i]
                j-=1
        print nums
        return j+1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值