牛客網劍指offer知識點歸納
第2題:replace()方法
str.replace(old, new[, max])
實例:
str = "this is string example....wow!!! this is really string";
print str.replace("is", "was");
print str.replace("is", "was", 3);
結果:
thwas was string example....wow!!! thwas was really string
thwas was string example....wow!!! thwas is really string
第3題:鏈表
鏈表並不等同於列表,元祖等,它們的區別在於鏈表中的每個元素都是由兩部分組成,一部分是值(元素值),一部分是下一個元素的地址,輸入一個鏈表,通常是已經指向第一個節點(每次使用完一個節點,則將指針指向第二個節點),保存在列表中。
題目描述:輸入一個鏈表,按鏈表從尾到頭的順序返回一個ArrayList。
代碼:
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回從尾部到頭部的列表值序列,例如[1,2,3]
def printListFromTailToHead(self, listNode):
# write code here
res = []
while listNode:
res.append(listNode.val)
listNode = listNode.next
return res[::-1]
第3題:數組操作
a[i:j]:i指起始位置,默認爲0;j是終止位置,默認爲len(a),在取出數組中的值時就會從數組下標i(包括)一直取到下標j(不包括j)
a[i:j:h]:這裏的i,j還是起始位置和終止位置,h是步長,默認爲1。
若i/j位置上出現負數依然倒數第i/j個下標的位置,h若爲負數則是逆序輸出,這時要求起始位置下標大於終止位置;
在兩個冒號的情況下若h爲正數,則i默認爲0,j默認爲len(a);
若h爲負數,則i默認爲-1(即最後一個位置),j默認爲-len(a)-1(下標0的前一個位置,這樣就能輸出到下標0了)
例:
1、
a='python'
b=a[1:4:]
print(b)
輸出:yth #冒號後沒有寫明故代表默認步長爲1
2、
a='python'
b=a[:-1]
print(b)
輸出:pytho #-1代表倒數第一個位置,因爲:前面的初始位置沒有指定,默認爲0,就從下標0一直取到最後一個位置之前
3、
a='python'
c=a[1:-2]
print(c)
輸出:yth #-2代表倒數第二個位置,即從下標1取到倒數第二個位置之前
4、
a='python'
b=a[::-1]
print(b)
輸出:nohtyp #前兩個冒號和上面一致,就是確定起始位置和終止位置
#第三個參數-1是指步長爲-1,也就是逆序輸出
#這裏a[::-1]相當於 a[-1:-len(a)-1:-1],也就是從最後一個元素到第一個元素
#所以[::-1]經常用來對一個數組進行逆序輸出
5、
a='python'
b=a[-2:-7:-2]
print(b)
輸出:otp #這裏起始位置是-2,終點是-7(不包括,所以輸出到-6位置),步長爲-2
第4題 重建二叉樹
二叉樹知識點:
前序遍歷:
若二叉樹爲空則結束返回,否則:
(1)訪問根結點。
(2)前序遍歷左子樹。
(3)前序遍歷右子樹 。
中序遍歷:
若二叉樹爲空則結束返回,否則:
(1)中序遍歷左子樹
(2)訪問根結點
(3)中序遍歷右子樹
後序遍歷:
若二叉樹爲空則結束返回,否則:
(1)後序遍歷左子樹
(2)後序遍歷右子樹
(3)訪問根結點
關鍵點:
已知前序遍歷序列和中序遍歷序列,可以唯一確定一棵二叉樹;
已知後序遍歷序列和中序遍歷序列,可以唯一確定一棵二叉樹;
但是已知前序遍歷序列和後序遍歷序列,是不能確定一棵二叉樹的。
該題目前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則二叉樹爲:
第5題 棧和隊列
棧:先進後出
隊列:先進先出
第6題 reverse()和reversed()方法區別
reverse():python中數組(列表)獨有的方法,用於列表數據的反轉
例:
list = [1, 3, 2, 4]
list.reverse()
print(list)
結果:[4,2,3,1]
reversed():python自帶的方法,列表,元祖,字典的反轉
例:
aa = (1, 2, 3)
print(tuple(reversed(aa)))
結果:(3,2,1)
第7題 斐波那契數列
斐波那契數列:在數學上,斐波那契數列指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……,被以遞推的方法定義:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)
python表示n次方
2的2次方:22
2的3次方:23
2的n次方:2**n