剣指offer-Phython 3版(一)

11190 ワード

剣指offer Python 3版(一)
daily learn
文書ディレクトリ
  • 剣指offer Python 3版(一)
  • 2 2 D配列検索
  • スペース置換
  • 印刷チェーンテーブル
  • 2 D配列検索2 Dはいれつけんさく
    Q:1つの2次元配列(各1次元配列の長さは同じ)では、各行が左から右に増加する順に並べ替えられ、各列が上から下に増加する順に並べ替えられる.関数を完了し、このような2次元配列と整数を入力して、配列にその整数が含まれているかどうかを判断してください.
    悪いことがあったら大男に指摘してもらいなさい
    私の考え方私の策略は最初の数字から右へ探して、頭が着いたら次の列に向かって右へ探し続けて、最後の一人がiとjを混同しました
    [[ * * * ]
    [ * * * ]
    [ * * * ]]
    class Solution:
        def find(self, target, array):
            """
                            
            @param target:
            @param array:
            @return:
            """
            i = 0  #     #     
            j = 0  #  
            while True:
    
                if target == array[i][j]:  #       
                    return '  %s ' % target
                if target < array[i][j]:  #                 ,        
                    return '  %s   ' % target
    
    
                if target > array[i][j]:  #         array[i][j] ,    
                    if j < len(array[0]) - 1:
                        j += 1
                    else:  #        +1   0
                        i += 1
                        j = 0
                        if i > len(array) - 1:  #      ,oops!
                            return '   %s' % target
    
    
    
    
    
    if __name__ == '__main__':
        s = Solution()
        #        
        arr = list(eval(input('      :'))) # eval        arr   str
        tar = int(input('       :'))
        #     
        # tar = 4
        # arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
        #     
        # for num in range(1, 12):
        #     print(s.find(num, arr))
        print(s.find(tar, arr))
    

    テストはコメントのforループで見ることができます
      1 
      2 
      3 
      4 
      5 
      6 
      7 
      8 
      9 
       10
       11
    

    スペース置換
    Q:1文字列の各スペースを「%20」に置き換える関数を実装してください.例えば、文字列がWe Are Happyである.置換後の文字列はWe%20 Are%20 Happy
    このeasy
    class Solution:
        def replacespace(self, stringing):
            """
    
            @param string:
            @return:
            """
            if ' ' in stringing:
                return stringing.replace(' ', '%20')
            else:
                return 'no space'
    
    
    
    if __name__ == '__main__':
        s = Solution()
        req = 'Hello World !'
        print(s.replacespace(req))
    

    結果表示
    Hello%20World%20!
    

    チェーンテーブルの印刷
    Q:チェーンテーブルを入力し、チェーンテーブルの末尾から順にArrayListを返します.
    正直チェーン時計はあまり使ったことがありませんが、簡単ですが
    class Node(object):
        """
           
        """
    
        def __init__(self, val):
            self.val = val
            self.next = None
    
    
    class Solution:
        def tailTohead(self, listnode):
            """
    
            @return:
            """
            result = []
            while listnode:
                result.append(listnode.val)
                listnode = listnode.next
            return result.reverse() #        , reverse