国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

劍指offer練習Python(一)

2019-11-06 06:56:54
字體:
來源:轉載
供稿:網友

http://blog.csdn.net/u011274209/article/details/60486240

(1)二維數組中的查找

        在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。

# -*- coding:utf-8 -*-class Solution:    # array 二維列表    def Find(self, target, array):        # write code here        ilen = len(array)        jlen = len(array[0])        i = ilen - 1        j = 0        while j < jlen and i > -1:            if array[i][j] == target:                return True            elif array[i][j] < target:           		j += 1            else:                i -= 1        return False(2)替換空格

          請實現一個函數,將一個字符串中的空格替換成“%20”。例如,當字符串為We Are Happy.則經過替換之后的字符串為We%20Are%20Happy。

# -*- coding:utf-8 -*-class Solution:    # s 源字符串    def replaceSpace(self, s):        # write code here        return s.replace(" ", "%20")

(3)從尾到頭打印鏈表

          輸入一個鏈表,從尾到頭打印鏈表每個節點的值。

# -*- coding:utf-8 -*-# class ListNode:#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution:    # 返回從尾部到頭部的列表值序列,例如[1,2,3]    def PRintListFromTailToHead(self, listNode):        # write code here        l = []        head = listNode        while head:            l.insert(0, head.val)            head = head.next        return l

(4)重建二叉樹         輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹并返回。
# -*- coding:utf-8 -*-# class TreeNode:#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution:    # 返回構造的TreeNode根節點    def reConstructBinaryTree(self, pre, tin):        # write code here        if len(pre) == 0:            return None        count = 0        for i in tin:            if i == pre[0]:            	tn = TreeNode(pre[0])                tn.left = self.reConstructBinaryTree(pre[1:count + 1],tin[0:count])                tn.right = self.reConstructBinaryTree(pre[count + 1:len(pre)],tin[count+1:len(tin)])                return tn            count += 1

(5)用兩個棧實現隊列

          用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素為int類型。

# -*- coding:utf-8 -*-class Solution:    def __init__(self):        self.stack1 = []        self.stack2 = []    def push(self, node):        # write code here        self.stack1.append(node)    def pop(self):        if len(self.stack2) == 0:            while len(self.stack1) != 0:                self.stack2.append(self.stack1.pop())        return self.stack2.pop()(6)旋轉數組的最小數字

          把一個數組最開始的若干個元素搬到數組的末尾,我們稱之為數組的旋轉。輸入一個非遞減排序的數組的一個旋轉,輸出旋轉數組的最小元素。例如數組{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該數組的最小值為1。NOTE:給出的所有元素都大于0,若數組大小為0,請返回0。

# -*- coding:utf-8 -*-class Solution:    def minNumberInRotateArray(self, rotateArray):        # write code here        pre = 0        for i in rotateArray:            if i < pre :                return i            pre = i(7)斐波那契數列

         大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項。n<=39

# -*- coding:utf-8 -*-class Solution:    def Fibonacci(self, n):        # write code here        array = [1, 1]        if n == 0:        	return 0        n = n - 1        i = 2        while i <= n:            array.append(array[i - 1] + array[i - 2])            i += 1        return array[n](8)跳臺階

         一只青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。

# -*- coding:utf-8 -*-class Solution:    def jumpFloor(self, number):        # write code here        array = [1, 2]        number = number - 1        i = 2        while i <= number:            array.append(array[i - 1] + array[i - 2])            i += 1        return array[number](9)變態跳臺階

         一只青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。

# -*- coding:utf-8 -*-class Solution:    def jumpFloorII(self, number):        # write code here        if number == 0 or number == 1:            return 1        else:            return 2 * self.jumpFloorII(number - 1)(10)矩形覆蓋

           我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?

# -*- coding:utf-8 -*-class Solution:    def rectCover(self, number):        # write code here        if number==0:            return 0        a = 1        b = 1        for i in range(number):            a, b = b, a + b        return a(11)二進制中1的個數

           輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼表示。

# -*- coding:utf-8 -*-class Solution:    def NumberOf1(self, n):        # write code here        return sum([(n>>i & 1) for i in range(0,32)])


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宝鸡市| 安国市| 盐亭县| 麦盖提县| 中西区| 资阳市| 唐河县| 桃园市| 栖霞市| 南宫市| 柘荣县| 庆城县| 共和县| 区。| 四子王旗| 攀枝花市| 南溪县| 天门市| 麻城市| 静海县| 德江县| 平安县| 团风县| 岚皋县| 垦利县| 宣威市| 荔浦县| 临泽县| 拜泉县| 连山| 马公市| 永善县| 玛纳斯县| 贵南县| 泾阳县| 大方县| 寿阳县| 贵定县| 贞丰县| 阳山县| 砚山县|