劍指offer --algorithm (持續(xù)更新)

操千曲而識譜佳窑,認千劍而知器,學(xué)而問者千篇父能,悟者為上

  • 題1---singleton 模式
該題的本意或者說想要達到的理想目的是:改變一個子類的屬性神凑,不管聲明多少個新的不同的實例對象,其相應(yīng)的屬性值是一樣的

在進行編碼之前何吝,預(yù)備知識有兩點溉委,一就是__ new _(cls)與_ init __ (self) 之間的區(qū)別,二就是super()單線程子類繼承

  • 用一句話概括就是前者是聲明的一個實例爱榕,而后者聲明的是一個對象瓣喊,直白的講,比如你想要把一堆人分為一類黔酥,那么你需要先從這一堆人中找一個對象藻三,然后自定義的給他聲明一些屬性(胡子,身高等)這就是init 初始化的作用絮爷,而你要判斷這些屬性適合不適合于其他的人趴酣,你就要從這堆人中找到一個人,而這個人就是你要研究的實例對象
...     def print_c(self): 
...       print"hello world!"
...        
class child(hello): 
...     def print_c(self): 
...         super(child,self).print_c() 
...          
 child().print_c() 
hello world!

下面開始解題
方法一:利用繼承類來實現(xiàn)

class singleton1(object):
    def __new__(cls):
        if not hasattr(cls,'instance'):#當假設(shè)cls這個實例沒有instance屬性的時候
            ori=super(singleton1,cls)#將sington1作為cls的一個子類坑夯,重新定義了一個新的類
            cls.intsance=ori.__new__(cls)
        return cls.intsance
    
    
class my(singleton1):
    def __init__(self):
        self.a=1
    

def main():
    l1=my()
    l2=my()
    print (l1==l2)
    l1.a=3
    print (l2.a)
    print (l1.a)
   
    
if __name__=='__main__':
    main()

方法二:只需要super 聲明的子類具有和原來的實例cls 具備同樣的屬性即可

class singleton(object):
    dic={}
    def __new__(cls):
        descent=super(singleton,cls)#聲明一個子類
        descent.__dict__=cls.dic#子類和父類實例的屬性相同
        return descent

class mysecond(singleton1):
     def __init__(self):
        self.a=1
    
def main():
    l1=mysecond()
    l2=mysecond()
    print (l1==l2)
    l1.a=3
    print (l2.a)
    print (l1.a)

方法三:最為簡單岖寞,其本質(zhì)上沒有兩個兩個實例之間的互動,而是通過__ init __的屬性初始化完成單線程的目的

class mythird(object):
    def __init__(self,a):
        self.a=a

def main():
    l1=mythird()
    l2=mythird()
    l1.a=3
    print (l2.a)
  • 題2---二維數(shù)組的查找
    查找一個數(shù)是否屬于一個二維數(shù)組柜蜈,原題信息如下截圖:


    image.png

    解題的過程實際上就是選擇algorithm 的過程仗谆,這也是為什么算法這么的重要,在該書中有這么一段話很值得算法研究人員的思考(可能對我這種菜鳥感觸太大了)淑履,因此摘錄下來:

當我們分析一個復(fù)雜的問題的時候隶垮,無從下手,或者后續(xù)步驟越來越復(fù)雜秘噪,使得開頭容易狸吞,后續(xù)剪不斷理還亂的思緒交叉,這時候就需要從一個簡單的具體實例出發(fā)指煎,試圖尋找其普遍規(guī)律 ----書中以插找7為例蹋偏,首先右上角9>7,因此根據(jù)二維數(shù)組的排布規(guī)律,可以刪除該列至壤,一直刪除到前兩列威始,由于2<7所以刪除行,直到在 刪除1前兩行后像街,檢測到7

  • 普適規(guī)律:首先選取右上角的數(shù)黎棠,如果該數(shù)字等于要查找的數(shù)晋渺,就停止查找,否則如果該數(shù)字大于要查找的數(shù)字脓斩,就刪除對應(yīng)的列木西,反之,就刪除對應(yīng)的行

下面為封裝代碼:

#二維數(shù)組的查找随静,算法就是根據(jù)書中的理念
import numpy as np 
import pandas as pd 
from pandas import Series
from pandas import DataFrame 
#下面的例子是以整數(shù)二維數(shù)組為例
class search(object):
    #在全局變量中定義一個array可以用np.arange(12).reshape((3,4))
    def __init__(self,array,target):
        self.array=array
        self.target=target
    def judge(self):
        list=[]
        if self.array==np.array(list):
            return False
    def num(self):
        row=int(np.shape(self.array)[0])#得到行數(shù)
        column=int(np.shape(self.array)[1])#得到列數(shù)
        return column,row
       
    def permit(self):
        if type(self.target)!=int:
            self.target=int(self.target)#對其格式進行匹配
    def finder(self):
        i,j=self.num()#通過num()方法拿到列數(shù)行數(shù)
        m=0#重新定義行數(shù)
        n=i-1#將列數(shù)賦值給n户魏,之所以為i-1,是因為列索引是從0開始的
        while n>=0 and m<=(j-1):#當列數(shù)還在索引范圍之內(nèi),且行數(shù)也在索引范圍之內(nèi)時
            if self.array[m][n]<self.target:#當右上角的數(shù)小于要查找的數(shù)字時
                j+=1#刪除行
            elif self.array[m][n]>self.target:
                n-=1
            else:
                return True
        return False
        print ('the target was not in this aimed array')
                
        
        

        
 
def main():
    array=np.arange(12).reshape((3,4))
    s=search(array,8)
    s.finder()
     
if __name__=='__main__':
     main()
  • 最近在看了不起的匠人,希望能夠靜心挪挤,2018新年的第一集:“非靜而無以為學(xué)叼丑,摒言、聽步扛门、聞鼠
  • 除去不可抗力因素外鸠信,希望能一日兩題,持續(xù)更新
  • Freedom as autonomy
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末论寨,一起剝皮案震驚了整個濱河市星立,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌葬凳,老刑警劉巖绰垂,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異火焰,居然都是意外死亡劲装,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門昌简,熙熙樓的掌柜王于貴愁眉苦臉地迎上來占业,“玉大人,你說我怎么就攤上這事纯赎∏玻” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵犬金,是天一觀的道長念恍。 經(jīng)常有香客問我,道長晚顷,這世上最難降的妖魔是什么峰伙? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮音同,結(jié)果婚禮上词爬,老公的妹妹穿的比我還像新娘秃嗜。我一直安慰自己权均,他們只是感情好顿膨,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著叽赊,像睡著了一般恋沃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上必指,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天囊咏,我揣著相機與錄音,去河邊找鬼塔橡。 笑死梅割,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的葛家。 我是一名探鬼主播户辞,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼癞谒!你這毒婦竟也來了底燎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤弹砚,失蹤者是張志新(化名)和其女友劉穎双仍,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桌吃,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡朱沃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了茅诱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片为流。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖让簿,靈堂內(nèi)的尸體忽然破棺而出敬察,到底是詐尸還是另有隱情,我是刑警寧澤尔当,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布莲祸,位于F島的核電站,受9級特大地震影響椭迎,放射性物質(zhì)發(fā)生泄漏锐帜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一畜号、第九天 我趴在偏房一處隱蔽的房頂上張望缴阎。 院中可真熱鬧,春花似錦简软、人聲如沸蛮拔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽建炫。三九已至畦韭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肛跌,已是汗流浹背艺配。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留衍慎,地道東北人转唉。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像稳捆,于是被迫代替她去往敵國和親酝掩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉眷柔,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,692評論 0 9
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理期虾,服務(wù)發(fā)現(xiàn),斷路器驯嘱,智...
    卡卡羅2017閱讀 134,638評論 18 139
  • 作者/不同樊響 不羨鴛鴦不羨仙 同是文友相聚歡 凡事靜心方能遠 響徹云霄譜新篇
    不同樊響閱讀 192評論 1 0
  • 哥本哈根13天減肥食譜 這份食譜完全從別處搬來的镶苞,自己吃的時候順便拍了照,就發(fā)出來啦鞠评,沒想到反響那么大茂蚓,很多朋友都...
    純瑩一一奈希純子閱讀 241評論 0 2
  • 1. 如何全局安裝一個 node 應(yīng)用? 在終端輸入npm install -g pkg pkg為安裝包的名字pk...
    _李祺閱讀 216評論 0 1