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)])
新聞熱點
疑難解答