劍指offer--algorithm6

接下來會在開頭簡單的整理下月童度河每天所讀部分的讀書筆記节猿,增加儀式感和思考的精度票从,拋磚引玉,希望能為看到文章的朋友帶來一些生活的啟示,認真生活纫骑,踏踏實實寫代碼蝎亚,復盤代碼

  • 相愛
    我問他為什么要睡我的房間,他說先馆,人生可貴发框,我和你在一起的機會不多
    深愛的本質是悲憫
    愛一個人,先讓心清爽和溫厚起來是首要
    只管走著煤墙,不必逗留梅惯,去采摘臨路的鮮花來保存,因為一路上仿野,花會繼續(xù)自然地開著......人們應該帶著更多的了解來彼此靠近铣减,說,當我靠近你脚作,我心里某些東西開始舞蹈葫哗,如果你和我有同樣的感覺,或許我們可以相處幾天.......人生短暫
    好的關系球涛,應該共行趨向解脫劣针,而不是使彼此陷入更深的輪回,初級的愛是一種深深的束縛和纏繞亿扁,高級的愛是得以解脫
  • 葬禮
    泰戈爾--像一群思想的鶴鳥捺典,日夜飛向他們的山巢,在我向你合十膜拜之中从祝,讓我全部的聲明襟己,啟程回到它永久的家鄉(xiāng)

題12--調整數(shù)組順序奇數(shù)位與偶數(shù)的前面
關于本題的解題思路書中上進行了示例演示、方法依舊是在數(shù)組的前后設立指針


image.png

image.png

在進行解題之前牍陌,需要了解位與判斷奇偶的方

  • 0x開頭表示的是16進制擎浴,0開頭是8進制,無特殊符號的為10進制毒涧,0x1表示為00000001
  • k&0x1如果得到的結果為1退客,說明k為奇數(shù),如果為0,說明k為偶數(shù)

下面為代碼和注釋部分链嘀,分為兩種方法一種是簡單的基本方法萌狂,另外一種是加入了擴展函數(shù),可以通過改變擴展函數(shù)來解決類似的問題(比如:把能被3整除的數(shù)放置在不能被三整除的數(shù)前面)

方法1
利用位與運算
"""
class solution(object):
    def __init__(self,array,odd=[],even=[]):
        self.array=array#自定義數(shù)組
        self.odd=odd#存儲奇數(shù)的列表
        self.even=even#存儲偶數(shù)的列表
    def odd_even(self):
        if self.array==[]:
            return None
        if len(self.array)==1:
            return self.array[0]
        for i in self.array:
            if i & 0x1==0:#說明為偶數(shù)
                self.even.append(i)
            if i & 0x1==1:#s說明為偶數(shù)
                self.odd.append(i)
        return self.odd+self.even 
    
    
def main():
    s=solution([1,2,3,4,5,6,7])
    print (s.odd_even())
    

if __name__=='__main__':
    main()
"""
方法2
指針和擴展函數(shù)的使用
"""
class solution(object):
    def __init__(self,array):
        self.array=array
    def odd_even(self):#其中func為擴展的功能函數(shù)怀泊,只寫進去函數(shù)名字即可
        if len(self.array)==0:#當自定義的數(shù)組為空的時候
            return None
        if len(self.array)==1:#當自定義的數(shù)組為1的時候
            return self.array[0]
        a_begin=0#第一個指針設定在頭部
        a_end=len(self.array)-1#第二個指針設定在尾部
        while a_begin<a_end:#當前指針的索引值小于后指針的索引值的時候茫藏,說明換位還沒有結束
            while a_begin<a_end and not self.is_even(self.array[a_begin]):#當前指針的索引值小于后指針的索引值且,對應的值不是偶數(shù)時
                a_begin+=1#前移一位
            while a_begin<a_end and self.is_even(self.array[a_end]):#當前指針的索引值小于后指針的索引值且霹琼,對應的值是偶數(shù)時
                a_end-=1
            if a_begin<a_end:#當進行了前邊的指針移動后务傲,如果前指針的索引還小于后指針的索引的時候
                self.array[a_begin],self.array[a_end]=self.array[a_end],self.array[a_begin]#互換位置
        return self.array
    def is_even(self,n):
        return not n&0x1 #n&0x1默認的輸出值為1凉当,因此該函數(shù)返回的正向結果是偶數(shù),即偶數(shù)為True,奇數(shù)為False
def main():
    s=solution([1,2,3,4,5,6,7])
    #print (type(s.odd_even()))
    print (s.odd_even())
    
if __name__=='__main__':
    main()

在進行下一題的切換之前售葡,進行一些概念的陳述

  • 魯棒性(Robust)
    指的是程序能夠判斷輸入是否合乎規(guī)范要求看杭,并對不合要求的輸入予以合理的處理。容錯性是魯棒性的一個重要的特點
    本質上就是要多考慮邊界性的問題

題13--鏈表中倒數(shù)第k個節(jié)點
輸入一個鏈表挟伙,輸出鏈表的第k個節(jié)點
剛開始的時候會想到先遍歷到鏈表的最后楼雹,然后再回溯k步,但是尖阔,單向鏈表的只有從前往后的指針贮缅,但是沒有從后往前的指針,所以此思路對于單向鏈表行不通

那么書中提供了兩種思路第一就是需要遍歷鏈表兩次

image.png

正如上邊所講的介却,如果面試官需要你只遍歷一次單向鏈表谴供,那該是怎樣的思路呢?本題的思路十分的巧妙和新奇齿坷,書中是這樣描述的


image.png

image.png

有了以上的思路后桂肌,下面為代碼和注釋部分:

"""
遍歷單線鏈表一次
輸出倒數(shù)第k個節(jié)點
"""
class node(object):#定義一個單向鏈表
    def __init__(self,value=None,next=None):
        self.value=value
        self.next=None
        



       
class solution(object):
    def printk_node(self,head,k):#兩個變量,一個是鏈表頭永淌,即是第一個指針的起始位置崎场,k為要輸出的節(jié)點的倒數(shù)第k個的位置
        if head==None or k<=0:#首先考慮到邊界問題
            return None
        pointer_ahead=head#首先將前指針實例化為表頭
        pointer_behind=None#初始化第二個指針,因為第一個指針還沒有向前移動仰禀,所以第二個指針初始化為None
        for i in range(k-1):#第一個指針開始移動
            if pointer_ahead.next!=None:
                pointer_ahead=pointer_ahead.next
            else:
                return pointer_ahead.value
        pointer_behind=head#當?shù)谝粋€指針移動K-1步的時候,第二個指針從表頭開始準備遍歷
        while pointer_ahead.next!=None:#說明還沒遍歷到鏈表的尾部
            pointer_ahead=pointer_ahead.next#第一個指針繼續(xù)后移
            pointer_behind=pointer_behind.next#第二個指針也后移
        return pointer_behind#最終返回該節(jié)點蚕愤,就是我們要找的倒數(shù)第k個節(jié)點
    
        
 



       
def main():
    n1=node(1)
    n2=node(2)
    n3=node(3)
    n4=node(4)
    n5=node(5)
    n1.next=n2
    n2.next=n3
    n3.next=n4
    n4.next=n5
    s=solution()
    print (s.printk_node(n1,1).value)
    
if __name__=='__main__':
    main()

今天的結語是: persistence答恶、 persistence、 persistence萍诱!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末悬嗓,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子裕坊,更是在濱河造成了極大的恐慌包竹,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件籍凝,死亡現(xiàn)場離奇詭異周瞎,居然都是意外死亡,警方通過查閱死者的電腦和手機饵蒂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門声诸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人退盯,你說我怎么就攤上這事彼乌⌒嚎希” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵慰照,是天一觀的道長灶挟。 經(jīng)常有香客問我,道長毒租,這世上最難降的妖魔是什么稚铣? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮蝌衔,結果婚禮上榛泛,老公的妹妹穿的比我還像新娘。我一直安慰自己噩斟,他們只是感情好曹锨,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著剃允,像睡著了一般沛简。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斥废,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天椒楣,我揣著相機與錄音,去河邊找鬼牡肉。 笑死捧灰,一個胖子當著我的面吹牛,可吹牛的內容都是我干的统锤。 我是一名探鬼主播毛俏,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼饲窿!你這毒婦竟也來了煌寇?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤逾雄,失蹤者是張志新(化名)和其女友劉穎阀溶,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸦泳,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡银锻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了做鹰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片徒仓。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖誊垢,靈堂內的尸體忽然破棺而出掉弛,到底是詐尸還是另有隱情症见,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布殃饿,位于F島的核電站谋作,受9級特大地震影響,放射性物質發(fā)生泄漏乎芳。R本人自食惡果不足惜遵蚜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奈惑。 院中可真熱鬧吭净,春花似錦、人聲如沸肴甸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽原在。三九已至友扰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間庶柿,已是汗流浹背村怪。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留浮庐,地道東北人甚负。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像审残,于是被迫代替她去往敵國和親梭域。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內容

  • 鏈表 記錄《劍指offer》中所有關于鏈表的題目维苔,以及LeetCode中的相似題目 相關題目列表 題目 鏈表是面試...
    wenmingxing閱讀 1,157評論 0 11
  • 前言 2. 實現(xiàn) Singleton 3. 數(shù)組中重復的數(shù)字 4. 二維數(shù)組中的查找 5. 替換空格 6. 從尾到...
    Observer_____閱讀 2,922評論 0 1
  • 樹 記錄《劍指offer》中所有關于樹的題目碰辅,以及LeetCode中的相似題目懂昂。 相關題目列表 題目 樹是一種最常...
    wenmingxing閱讀 1,414評論 2 13
  • 寧博Villa閱讀 203評論 2 1
  • 多年以來無人問津 歲月在這里專注于一件事 掀起蒙塵窗紗 時光將鏡子磨花 一張越劇海報 從黑與白的時代探出頭 盼望著...
    雲(yún)歸閱讀 372評論 0 0