1. 程式人生 > >《劍指offer》11-15題---python實現

《劍指offer》11-15題---python實現

‘’’ 11、題目描述 給定一個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。 ‘’’

class Solution:
    def Power(self, base, exponent):
        if base==0:
            return 0
        if exponent==1:
            return 1
        else:
            if exponent<0:
                result = base**(-exponent)
                return 1/result
            else:
                return base**exponent

‘’’ 13、題目描述 輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序, 使得所有的奇數位於陣列的前半部分,所有的偶數位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。 ‘’’

class Solution:
    def reOrderArray(self, array):
        odd = []
        double = []
        n = len(array)
        for j in range(n):
            i = j
            while i>0:
                if array[i]<array[i-1]:
                    array[i],array[i-1]=array[i-1],array[i]
                else:
                    break
        for k in range(n):
            if array[k] % 2 == 0:
                double.append(array[k])
            else:
                odd.append(array[k])
        return odd+double

‘’’ 14、題目描述 輸入一個連結串列,輸出該連結串列中倒數第k個結點。 ‘’’

class Solution:
    def FindKthToTail(self, head, k):
        result = []
        while head:
            result.append(head)
            head = head.next
        if k>len(result) or k==0:
            return []
        else:
            return result[-k]

‘’’ 15、題目描述 輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭。 ‘’’

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None


class Solution:
    # 返回ListNode
    def ReverseList(self, pHead):
        lis = []
        pRes = ListNode(-1)
        pRes.next = pHead
        if not pHead:
            lis = []
        while pHead:
            lis.append(pHead.val)
            pHead = pHead.next
        newList = lis[::-1]
        temp = pRes.next
        for i in range(len(newList)):
            pRes.next.val = newList[i]
            pRes = pRes.next
        return temp``