日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python力扣刷題

系統 1823 0

文章目錄

  • python力扣刷題
    • 探索初級算法
      • 數組
        • 從數組中刪除重復項
        • 買賣股票的最佳時機 II
        • 向右旋轉數組幾次
        • 存在重復
        • 找出只出現一次的數字的元素
        • 兩個數組的交集 II
        • 元素末尾加一
        • 移動0的位置到數組末尾
        • 求數組中兩數之和等于指定值的兩個數,并求索引
        • 有效的數獨
        • 旋轉圖像(zip函數,map函數)

python力扣刷題

探索初級算法

數組

從數組中刪除重復項

            
              
                class
              
              
                Solution
              
              
                :
              
              
                def
              
              
                removeDuplicates
              
              
                (
              
              self
              
                ,
              
               nums
              
                )
              
              
                :
              
              
                """
            刪除重復項后的數組
        """
              
              
                if
              
              
                (
              
              
                len
              
              
                (
              
              nums
              
                )
              
              
                ==
              
              
                0
              
              
                )
              
              
                :
              
              
                return
              
              
                0
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              
                len
              
              
                (
              
              nums
              
                )
              
              
                )
              
              
                :
              
              
                for
              
               j 
              
                in
              
              
                range
              
              
                (
              
              i
              
                +
              
              
                1
              
              
                ,
              
              
                len
              
              
                (
              
              nums
              
                )
              
              
                )
              
              
                :
              
              
                if
              
              
                (
              
              nums
              
                [
              
              j
              
                ]
              
              
                ==
              
               nums
              
                [
              
              i
              
                ]
              
              
                )
              
              
                :
              
              
                    nums
              
                [
              
              j
              
                ]
              
              
                =
              
              
                [
              
              
                ]
              
              
                # 把為[]的數刪掉
              
              
                while
              
              
                [
              
              
                ]
              
              
                in
              
               nums
              
                :
              
              
            nums
              
                .
              
              remove
              
                (
              
              
                [
              
              
                ]
              
              
                )
              
              

        remo_lists_len 
              
                =
              
              
                len
              
              
                (
              
              nums
              
                )
              
              
                return
              
               remo_lists_len
              
                ,
              
               nums



              
                def
              
              
                main
              
              
                (
              
              
                )
              
              
                :
              
              
                """
        主函數
    """
              
              
                print
              
              
                (
              
              
                '請輸入任意數組(每個元素用空格隔開,如:1 1 2'
              
              
                )
              
              
    nums_str 
              
                =
              
              
                input
              
              
                (
              
              
                '請輸入:'
              
              
                )
              
              
    str_list 
              
                =
              
               nums_str
              
                .
              
              split
              
                (
              
              
                ' '
              
              
                )
              
              
                # 字符串列表轉數值字符串
              
              
    nums 
              
                =
              
              
                [
              
              
                ]
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              
                len
              
              
                (
              
              str_list
              
                )
              
              
                )
              
              
                :
              
              
        nums
              
                .
              
              append
              
                (
              
              
                float
              
              
                (
              
              str_list
              
                [
              
              i
              
                ]
              
              
                )
              
              
                )
              
              
                # 調用類
              
              
    sol 
              
                =
              
               Solution
              
                (
              
              
                )
              
              
                # 執行類的初始化
              
              
    remo_lists_len
              
                ,
              
               remo_lists 
              
                =
              
               sol
              
                .
              
              removeDuplicates
              
                (
              
              nums
              
                )
              
              
                # 刪除重復項后的數組
              
              
                print
              
              
                (
              
              
                '刪除重復項后的數組為:{},長度為:{}'
              
              
                .
              
              
                format
              
              
                (
              
              remo_lists
              
                ,
              
               remo_lists_len
              
                )
              
              
                )
              
              
                if
              
               __name__ 
              
                ==
              
              
                '__main__'
              
              
                :
              
              
    main
              
                (
              
              
                )
              
            
          

買賣股票的最佳時機 II

            
              
                """
    給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。
    設計一個算法來計算你所能獲取的最大利潤。你可以盡可能地完成更多的交易(多次買賣一支股票)。
    注意:你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票)。
"""
              
              
                class
              
              
                Solution
              
              
                :
              
              
                def
              
              
                maxProfit
              
              
                (
              
              self
              
                ,
              
               nums
              
                )
              
              
                :
              
              
                """
            求最大收益
        """
              
              
        profit 
              
                =
              
              
                0
              
              
        i 
              
                =
              
              
                0
              
              
                while
              
              
                (
              
              i
              
                <
              
              
                len
              
              
                (
              
              nums
              
                )
              
              
                -
              
              
                1
              
              
                )
              
              
                :
              
              
            j 
              
                =
              
               i
              
                +
              
              
                1
              
              
                # 如果第j個值比第i個值小,不售出,i=i+1
              
              
                if
              
               nums
              
                [
              
              j
              
                ]
              
              
                <
              
               nums
              
                [
              
              i
              
                ]
              
              
                :
              
              
                i 
              
                +=
              
              
                1
              
              
                # 如果第j個值比第i個值大 and 第j個值比第j+1個值大,售出,i=i+2
              
              
                elif
              
               nums
              
                [
              
              j
              
                ]
              
              
                >
              
               nums
              
                [
              
              i
              
                ]
              
              
                and
              
               nums
              
                [
              
              j
              
                ]
              
              
                >
              
               nums
              
                [
              
              j
              
                +
              
              
                1
              
              
                ]
              
              
                :
              
              
                buy_in 
              
                =
              
               nums
              
                [
              
              i
              
                ]
              
              
                buy_out 
              
                =
              
               nums
              
                [
              
              j
              
                ]
              
              
                profit 
              
                +=
              
               buy_out
              
                -
              
              buy_in
                i 
              
                +=
              
              
                2
              
              
                # 如果第j個值比第i個值大 and 第j個值比第j+1個值小,找出j最大的位置,售出,i=i+j
              
              
                elif
              
               nums
              
                [
              
              j
              
                ]
              
              
                >
              
               nums
              
                [
              
              i
              
                ]
              
              
                and
              
               nums
              
                [
              
              j
              
                ]
              
              
                <
              
               nums
              
                [
              
              j
              
                +
              
              
                1
              
              
                ]
              
              
                :
              
              
                while
              
              
                (
              
              nums
              
                [
              
              j
              
                ]
              
              
                <
              
              nums
              
                [
              
              j
              
                +
              
              
                1
              
              
                ]
              
              
                )
              
              
                :
              
              
                    j 
              
                +=
              
              
                1
              
              
                if
              
               j 
              
                ==
              
              
                len
              
              
                (
              
              nums
              
                )
              
              
                -
              
              
                1
              
              
                :
              
              
                break
              
              

                buy_in 
              
                =
              
               nums
              
                [
              
              i
              
                ]
              
              
                buy_out 
              
                =
              
               nums
              
                [
              
              j
              
                ]
              
              
                i 
              
                +=
              
               j
                profit 
              
                +=
              
               buy_out 
              
                -
              
               buy_in

        
              
                return
              
               profit



              
                def
              
              
                main
              
              
                (
              
              
                )
              
              
                :
              
              
                """
        主函數
    """
              
              
    nums 
              
                =
              
              
                [
              
              
                7
              
              
                ,
              
              
                6
              
              
                ,
              
              
                4
              
              
                ,
              
              
                3
              
              
                ,
              
              
                1
              
              
                ]
              
              
                # 調用類
              
              
    sol 
              
                =
              
               Solution
              
                (
              
              
                )
              
              
                # 執行類的初始化
              
              
    profit 
              
                =
              
               sol
              
                .
              
              maxProfit
              
                (
              
              nums
              
                )
              
              
                print
              
              
                (
              
              
                '最大收益為:{}'
              
              
                .
              
              
                format
              
              
                (
              
              profit
              
                )
              
              
                )
              
              
                if
              
               __name__ 
              
                ==
              
              
                '__main__'
              
              
                :
              
              
    main
              
                (
              
              
                )
              
            
          

向右旋轉數組幾次

            
              
                """
    給定一個數組,將數組中的元素向右移動 k 個位置,其中 k 是非負數
    eg:
        輸入: [1,2,3,4,5,6,7] 和 k = 3
        輸出: [5,6,7,1,2,3,4]
        解釋:
        向右旋轉 1 步: [7,1,2,3,4,5,6]
        向右旋轉 2 步: [6,7,1,2,3,4,5]
        向右旋轉 3 步: [5,6,7,1,2,3,4]

    執行用時:24ms
"""
              
              
                class
              
              
                Solution
              
              
                :
              
              
                def
              
              
                rotate
              
              
                (
              
              self
              
                ,
              
               nums
              
                ,
              
               k
              
                )
              
              
                :
              
              
                """
            nums 輸入的數組
            k 向右移動幾位
        """
              
              
                while
              
              
                (
              
              k
              
                >
              
              
                0
              
              
                )
              
              
                :
              
              
            nums
              
                .
              
              insert
              
                (
              
              
                0
              
              
                ,
              
               nums
              
                [
              
              
                -
              
              
                1
              
              
                ]
              
              
                )
              
              
            nums
              
                .
              
              pop
              
                (
              
              
                )
              
              
            k 
              
                -=
              
              
                1
              
              
                return
              
               nums


              
                def
              
              
                main
              
              
                (
              
              
                )
              
              
                :
              
              
                """
        主函數
    """
              
              
    nums 
              
                =
              
              
                [
              
              
                1
              
              
                ,
              
              
                2
              
              
                ,
              
              
                3
              
              
                ,
              
              
                4
              
              
                ,
              
              
                5
              
              
                ,
              
              
                6
              
              
                ,
              
              
                7
              
              
                ]
              
              
    k 
              
                =
              
              
                3
              
              
                # 調用類
              
              
    sol 
              
                =
              
               Solution
              
                (
              
              
                )
              
              
                # 執行類的初始化
              
              
    rotate_list 
              
                =
              
               sol
              
                .
              
              rotate
              
                (
              
              nums
              
                ,
              
               k
              
                )
              
              
                print
              
              
                (
              
              
                '旋轉{}次后數組為:{}'
              
              
                .
              
              
                format
              
              
                (
              
              k
              
                ,
              
               rotate_list
              
                )
              
              
                )
              
              
                if
              
               __name__ 
              
                ==
              
              
                '__main__'
              
              
                :
              
              
    main
              
                (
              
              
                )
              
            
          

存在重復

            
              
                """
    功能:給定一個整數數組,判斷是否存在重復元素。
        如果任何值在數組中出現至少兩次,函數返回 true。如果數組中每個元素都不相同,則返回 false。

    執行用時:24ms
"""
              
              
                class
              
              
                Solution
              
              
                (
              
              
                object
              
              
                )
              
              
                :
              
              
                def
              
              
                containsDuplicate
              
              
                (
              
              self
              
                ,
              
               nums
              
                )
              
              
                :
              
              
                """
            nums 輸入的數組
        """
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              
                len
              
              
                (
              
              nums
              
                )
              
              
                )
              
              
                :
              
              

            result 
              
                =
              
              
                False
              
              
                if
              
               nums
              
                .
              
              count
              
                (
              
              nums
              
                [
              
              i
              
                ]
              
              
                )
              
              
                >=
              
              
                2
              
              
                :
              
              
                result 
              
                =
              
              
                True
              
              
                return
              
               result



              
                def
              
              
                main
              
              
                (
              
              
                )
              
              
                :
              
              
                """
        主函數
    """
              
              
    nums 
              
                =
              
              
                [
              
              
                1
              
              
                ,
              
              
                1
              
              
                ,
              
              
                1
              
              
                ,
              
              
                3
              
              
                ,
              
              
                3
              
              
                ,
              
              
                4
              
              
                ,
              
              
                3
              
              
                ,
              
              
                2
              
              
                ,
              
              
                4
              
              
                ,
              
              
                2
              
              
                ]
              
              
                # 調用類
              
              
    sol 
              
                =
              
               Solution
              
                (
              
              
                )
              
              
                # 執行類的初始化
              
              
    result 
              
                =
              
               sol
              
                .
              
              containsDuplicate
              
                (
              
              nums
              
                )
              
              
                print
              
              
                (
              
              
                '函數返回: {}'
              
              
                .
              
              
                format
              
              
                (
              
              result
              
                )
              
              
                )
              
              
                if
              
               __name__ 
              
                ==
              
              
                '__main__'
              
              
                :
              
              
    main
              
                (
              
              
                )
              
            
          

找出只出現一次的數字的元素

            
              
                """
    功能:給定一個非空整數數組,除了某個元素只出現一次以外,其余每個元素均出現兩次。找出那個只出現了一次的元素
    eg:
        輸入: [4,1,2,1,2]
        輸出: 4

    執行用時:24ms
"""
              
              
                class
              
              
                Solution
              
              
                (
              
              
                object
              
              
                )
              
              
                :
              
              
                def
              
              
                singleNumber
              
              
                (
              
              self
              
                ,
              
               nums
              
                )
              
              
                :
              
              
                """
            找出那個只出現了一次的元素
        """
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              
                len
              
              
                (
              
              nums
              
                )
              
              
                )
              
              
                :
              
              
                if
              
               nums
              
                .
              
              count
              
                (
              
              nums
              
                [
              
              i
              
                ]
              
              
                )
              
              
                ==
              
              
                1
              
              
                :
              
              
                return
              
               nums
              
                [
              
              i
              
                ]
              
              
                def
              
              
                main
              
              
                (
              
              
                )
              
              
                :
              
              
                """
        主函數
    """
              
              
    nums 
              
                =
              
              
                [
              
              
                4
              
              
                ,
              
              
                1
              
              
                ,
              
              
                2
              
              
                ,
              
              
                1
              
              
                ,
              
              
                2
              
              
                ]
              
              
                # 調用類
              
              
    sol 
              
                =
              
               Solution
              
                (
              
              
                )
              
              
                # 執行類的初始化
              
              
    result 
              
                =
              
               sol
              
                .
              
              singleNumber
              
                (
              
              nums
              
                )
              
              
                print
              
              
                (
              
              
                '輸出: {}'
              
              
                .
              
              
                format
              
              
                (
              
              result
              
                )
              
              
                )
              
              
                if
              
               __name__ 
              
                ==
              
              
                '__main__'
              
              
                :
              
              
    main
              
                (
              
              
                )
              
            
          

兩個數組的交集 II

            
              
                """
    功能:給定兩個數組,編寫一個函數來計算它們的交集, 補集,并集
    eg:
        輸入: nums1 = [1,2,2,1], nums2 = [2,2]
        輸出: [2,2]

"""
              
              
                class
              
              
                Solution
              
              
                (
              
              
                object
              
              
                )
              
              
                :
              
              
                def
              
              
                intersection
              
              
                (
              
              self
              
                ,
              
               nums1
              
                ,
              
               nums2
              
                )
              
              
                :
              
              
                # 計算交集
              
              
        result_intersection_ 
              
                =
              
              
                [
              
              
                ]
              
              
                for
              
               i 
              
                in
              
               nums1
              
                :
              
              
                if
              
               i 
              
                in
              
               nums2
              
                :
              
              
                result_intersection_
              
                .
              
              append
              
                (
              
              i
              
                )
              
              
                return
              
               result_intersection_

    
              
                def
              
              
                intersect
              
              
                (
              
              self
              
                ,
              
               nums1
              
                ,
              
               nums2
              
                )
              
              
                :
              
              
                """
            計算它們的交集, 補集,并集
        """
              
              
        result_diff 
              
                =
              
              
                set
              
              
                (
              
              nums1
              
                )
              
              
                -
              
              
                set
              
              
                (
              
              nums2
              
                )
              
              
        result_unin 
              
                =
              
              
                set
              
              
                (
              
              nums1
              
                )
              
              
                |
              
              
                set
              
              
                (
              
              nums2
              
                )
              
              
        result_intersection 
              
                =
              
              
                set
              
              
                (
              
              nums1
              
                )
              
              
                &
              
              
                set
              
              
                (
              
              nums2
              
                )
              
              



        result_diff 
              
                =
              
              
                list
              
              
                (
              
              result_diff
              
                )
              
              
        result_unin 
              
                =
              
              
                list
              
              
                (
              
              result_unin
              
                )
              
              
        result_intersection 
              
                =
              
              
                list
              
              
                (
              
              result_intersection
              
                )
              
              
                return
              
               result_diff
              
                ,
              
               result_unin
              
                ,
              
               result_intersection
              
                ,
              
               self
              
                .
              
              intersection
              
                (
              
              nums1
              
                ,
              
               nums2
              
                )
              
              
                def
              
              
                main
              
              
                (
              
              
                )
              
              
                :
              
              
                """
        主函數
    """
              
              
    nums1 
              
                =
              
              
                [
              
              
                1
              
              
                ,
              
              
                2
              
              
                ,
              
              
                2
              
              
                ,
              
              
                1
              
              
                ]
              
              
    nums2 
              
                =
              
              
                [
              
              
                2
              
              
                ,
              
              
                2
              
              
                ]
              
              
                # 調用類
              
              
    sol 
              
                =
              
               Solution
              
                (
              
              
                )
              
              
                # 執行類的初始化
              
              
    result_diff
              
                ,
              
               result_unin
              
                ,
              
               result_intersection
              
                ,
              
               result_intersection_ 
              
                =
              
               sol
              
                .
              
              intersect
              
                (
              
              nums1
              
                ,
              
               nums2
              
                )
              
              
                print
              
              
                (
              
              
                'nums1 = [1,2,2,1]  nums2 = [2,2]'
              
              
                )
              
              
                print
              
              
                (
              
              
                '差集: {}'
              
              
                .
              
              
                format
              
              
                (
              
              result_diff
              
                )
              
              
                )
              
              
                print
              
              
                (
              
              
                '并集: {}'
              
              
                .
              
              
                format
              
              
                (
              
              result_unin
              
                )
              
              
                )
              
              
                print
              
              
                (
              
              
                '集合中符號求得交集: {}'
              
              
                .
              
              
                format
              
              
                (
              
              result_intersection
              
                )
              
              
                )
              
              
                print
              
              
                (
              
              
                '要求的交集: {}'
              
              
                .
              
              
                format
              
              
                (
              
              result_intersection_
              
                )
              
              
                )
              
              
                if
              
               __name__ 
              
                ==
              
              
                '__main__'
              
              
                :
              
              
    main
              
                (
              
              
                )
              
            
          

元素末尾加一

            
              
                """
    功能:給定一個由整數組成的非空數組所表示的非負整數,在該數的基礎上加一。
        最高位數字存放在數組的首位, 數組中每個元素只存儲一個數字。
        你可以假設除了整數 0 之外,這個整數不會以零開頭。

    eg: 輸入: [1,2,3]
        輸出: [1,2,4]
        解釋: 輸入數組表示數字 123。

"""
              
              
                class
              
              
                Solution
              
              
                (
              
              
                object
              
              
                )
              
              
                :
              
              
                def
              
              
                plusOne
              
              
                (
              
              self
              
                ,
              
               digits
              
                )
              
              
                :
              
              
        digits
              
                [
              
              
                -
              
              
                1
              
              
                ]
              
              
                =
              
               digits
              
                [
              
              
                -
              
              
                1
              
              
                ]
              
              
                +
              
              
                1
              
              
                return
              
               digits



              
                def
              
              
                main
              
              
                (
              
              
                )
              
              
                :
              
              
                """
        主函數
    """
              
              
    digits 
              
                =
              
              
                [
              
              
                1
              
              
                ,
              
              
                2
              
              
                ,
              
              
                3
              
              
                ]
              
              
                # 調用類
              
              
    sol 
              
                =
              
               Solution
              
                (
              
              
                )
              
              
                # 執行類的初始化
              
              
    result 
              
                =
              
               sol
              
                .
              
              plusOne
              
                (
              
              digits
              
                )
              
              
                print
              
              
                (
              
              
                '加1后的數組為: {}'
              
              
                .
              
              
                format
              
              
                (
              
              result
              
                )
              
              
                )
              
              
                if
              
               __name__ 
              
                ==
              
              
                '__main__'
              
              
                :
              
              
    main
              
                (
              
              
                )
              
            
          

移動0的位置到數組末尾

            
              
                """
    功能:給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。
        必須在原數組上操作,不能拷貝額外的數組。
        盡量減少操作次數。

    eg:
        [0,1,0,3,12]
        輸出: [1,3,12,0,0]

"""
              
              
                class
              
              
                Solution
              
              
                (
              
              
                object
              
              
                )
              
              
                :
              
              
                def
              
              
                moveZeroes
              
              
                (
              
              self
              
                ,
              
               nums
              
                )
              
              
                :
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              
                len
              
              
                (
              
              nums
              
                )
              
              
                -
              
              
                1
              
              
                )
              
              
                :
              
              
                # 如果前一個為0,后一個不為0,交換位置
              
              
                if
              
               nums
              
                [
              
              i
              
                ]
              
              
                ==
              
              
                0
              
              
                and
              
               nums
              
                [
              
              i
              
                +
              
              
                1
              
              
                ]
              
              
                !=
              
              
                0
              
              
                :
              
              
                t 
              
                =
              
               nums
              
                [
              
              i
              
                ]
              
              
                nums
              
                [
              
              i
              
                ]
              
              
                =
              
               nums
              
                [
              
              i
              
                +
              
              
                1
              
              
                ]
              
              
                nums
              
                [
              
              i
              
                +
              
              
                1
              
              
                ]
              
              
                =
              
               t

            
              
                # 如果前一個為0,后一個為0,找到不為0的元素,交換位置
              
              
                elif
              
              
                (
              
              nums
              
                [
              
              i
              
                ]
              
              
                ==
              
              
                0
              
              
                )
              
              
                and
              
              
                (
              
              nums
              
                [
              
              i
              
                +
              
              
                1
              
              
                ]
              
              
                ==
              
              
                0
              
              
                )
              
              
                :
              
              
                step 
              
                =
              
              
                0
              
              
                while
              
               nums
              
                [
              
              i
              
                ]
              
              
                ==
              
              
                0
              
              
                :
              
              
                    i 
              
                +=
              
              
                1
              
              
                    step 
              
                +=
              
              
                1
              
              
                if
              
               i 
              
                >
              
              
                len
              
              
                (
              
              nums
              
                )
              
              
                -
              
              
                1
              
              
                :
              
              
                        i 
              
                -=
              
              
                1
              
              
                        step 
              
                -=
              
              
                1
              
              
                break
              
              

                t 
              
                =
              
               nums
              
                [
              
              i
              
                ]
              
              
                nums
              
                [
              
              i
              
                ]
              
              
                =
              
               nums
              
                [
              
              i 
              
                -
              
               step
              
                ]
              
              
                nums
              
                [
              
              i 
              
                -
              
               step
              
                ]
              
              
                =
              
               t

        
              
                return
              
               nums



              
                def
              
              
                main
              
              
                (
              
              
                )
              
              
                :
              
              
                """
        主函數
    """
              
              
    nums 
              
                =
              
              
                [
              
              
                0
              
              
                ,
              
              
                1
              
              
                ,
              
              
                0
              
              
                ,
              
              
                3
              
              
                ,
              
              
                12
              
              
                ]
              
              
                # 調用類
              
              
    sol 
              
                =
              
               Solution
              
                (
              
              
                )
              
              
                # 執行類的初始化
              
              
    result 
              
                =
              
               sol
              
                .
              
              moveZeroes
              
                (
              
              nums
              
                )
              
              
                print
              
              
                (
              
              
                '數組為: {}'
              
              
                .
              
              
                format
              
              
                (
              
              result
              
                )
              
              
                )
              
              
                if
              
               __name__ 
              
                ==
              
              
                '__main__'
              
              
                :
              
              
    main
              
                (
              
              
                )
              
            
          

求數組中兩數之和等于指定值的兩個數,并求索引

            
              
                """
    功能:給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,并返回他們的數組下標。
        你可以假設每種輸入只會對應一個答案。但是,你不能重復利用這個數組中同樣的元素。

    eg:
        給定 nums = [2, 7, 11, 15], target = 9
        因為 nums[0] + nums[1] = 2 + 7 = 9
        所以返回 [0, 1]

    用時:20ms
"""
              
              
                class
              
              
                Solution
              
              
                (
              
              
                object
              
              
                )
              
              
                :
              
              
                def
              
              
                twoSum
              
              
                (
              
              self
              
                ,
              
               nums
              
                ,
              
               target
              
                )
              
              
                :
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              
                len
              
              
                (
              
              nums
              
                )
              
              
                -
              
              
                1
              
              
                )
              
              
                :
              
              
                for
              
               j 
              
                in
              
              
                range
              
              
                (
              
              i
              
                +
              
              
                1
              
              
                ,
              
              
                len
              
              
                (
              
              nums
              
                )
              
              
                )
              
              
                :
              
              
                if
              
               nums
              
                [
              
              i
              
                ]
              
              
                +
              
              nums
              
                [
              
              j
              
                ]
              
              
                ==
              
               target
              
                :
              
              
                return
              
               i
              
                ,
              
               j



              
                def
              
              
                main
              
              
                (
              
              
                )
              
              
                :
              
              
                """
        主函數
    """
              
              
    nums 
              
                =
              
              
                [
              
              
                15
              
              
                ,
              
              
                2
              
              
                ,
              
              
                7
              
              
                ]
              
              
    target 
              
                =
              
              
                9
              
              
                # 調用類
              
              
    sol 
              
                =
              
               Solution
              
                (
              
              
                )
              
              
                # 執行類的初始化
              
              
    i
              
                ,
              
               j 
              
                =
              
               sol
              
                .
              
              twoSum
              
                (
              
              nums
              
                ,
              
               target
              
                )
              
              
                print
              
              
                (
              
              
                '兩個數字分別為:{},{}\n索引分別為:{},{}'
              
              
                .
              
              
                format
              
              
                (
              
              nums
              
                [
              
              i
              
                ]
              
              
                ,
              
               nums
              
                [
              
              j
              
                ]
              
              
                ,
              
               i
              
                ,
              
               j
              
                )
              
              
                )
              
              
                if
              
               __name__ 
              
                ==
              
              
                '__main__'
              
              
                :
              
              
    main
              
                (
              
              
                )
              
            
          

有效的數獨

            
              
                """
    功能:判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。

        數字 1-9 在每一行只能出現一次。
        數字 1-9 在每一列只能出現一次。
        數字 1-9 在每一個以粗實線分隔的 3x3 宮內只能出現一次。

    說明:
        一個有效的數獨(部分已被填充)不一定是可解的。
        只需要根據以上規則,驗證已經填入的數字是否有效即可。
        給定數獨序列只包含數字 1-9 和字符 '.' 。
        給定數獨永遠是 9x9 形式的。

"""
              
              
                class
              
              
                Solution
              
              
                (
              
              
                object
              
              
                )
              
              
                :
              
              
                def
              
              
                __init__
              
              
                (
              
              self
              
                ,
              
               board
              
                )
              
              
                :
              
              
        self
              
                .
              
              board 
              
                =
              
               board

    
              
                def
              
              
                row
              
              
                (
              
              self
              
                )
              
              
                :
              
              
                """
            數字 1-9 在每一行只能出現一次
        """
              
              
                # 列循環,數組循環
              
              
                for
              
               colum 
              
                in
              
              
                range
              
              
                (
              
              
                0
              
              
                ,
              
              
                9
              
              
                )
              
              
                :
              
              
                # 行循環,i 操作
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              
                0
              
              
                ,
              
              
                9
              
              
                )
              
              
                :
              
              
                # 行循環,j操作
              
              
                for
              
               j 
              
                in
              
              
                range
              
              
                (
              
              i 
              
                +
              
              
                1
              
              
                ,
              
              
                9
              
              
                )
              
              
                :
              
              
                if
              
              
                (
              
              self
              
                .
              
              board
              
                [
              
              colum
              
                ]
              
              
                [
              
              i
              
                ]
              
              
                ==
              
               self
              
                .
              
              board
              
                [
              
              colum
              
                ]
              
              
                [
              
              j
              
                ]
              
              
                )
              
              
                and
              
              
                type
              
              
                (
              
              self
              
                .
              
              board
              
                [
              
              colum
              
                ]
              
              
                [
              
              i
              
                ]
              
              
                )
              
              
                ==
              
              
                int
              
              
                :
              
              
                return
              
              
                False
              
              
                return
              
              
                True
              
              
                def
              
              
                colum
              
              
                (
              
              self
              
                )
              
              
                :
              
              
                """
            數字 1-9 在每一列只能出現一次
        """
              
              
                # 行循環,數組循環
              
              
                for
              
               colum 
              
                in
              
              
                range
              
              
                (
              
              
                0
              
              
                ,
              
              
                9
              
              
                )
              
              
                :
              
              
                # 列循環,i 操作
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              
                0
              
              
                ,
              
              
                9
              
              
                )
              
              
                :
              
              
                # 列循環,j操作
              
              
                for
              
               j 
              
                in
              
              
                range
              
              
                (
              
              i 
              
                +
              
              
                1
              
              
                ,
              
              
                9
              
              
                )
              
              
                :
              
              
                if
              
              
                (
              
              self
              
                .
              
              board
              
                [
              
              i
              
                ]
              
              
                [
              
              colum
              
                ]
              
              
                ==
              
               self
              
                .
              
              board
              
                [
              
              j
              
                ]
              
              
                [
              
              colum
              
                ]
              
              
                )
              
              
                and
              
              
                type
              
              
                (
              
              self
              
                .
              
              board
              
                [
              
              colum
              
                ]
              
              
                [
              
              i
              
                ]
              
              
                )
              
              
                ==
              
              
                int
              
              
                :
              
              
                return
              
              
                False
              
              
                return
              
              
                True
              
              
                def
              
              
                box
              
              
                (
              
              self
              
                ,
              
               colum_start
              
                ,
              
               colum_end
              
                ,
              
               i_start
              
                ,
              
               i_end
              
                ,
              
              
                )
              
              
                :
              
              
                """
            colum_start:  eg:第一行的三個3*3的box, 要循環大數組的前三行,第一行start為0
            colum_end:    eg: 第一行的三個3*3的box, 要循環大數組的前三行,第三行end為3,range里面3取不到
            i_start:      要比較的元素索引開始值
            i_end:        要比較的元素索引終點值
            return:判斷在每一個以粗實線分隔的 3x3 宮內只能出現一次,true,否則返回false
        """
              
              
                # 9個單元格的列循環
              
              
                for
              
               colum 
              
                in
              
              
                range
              
              
                (
              
              colum_start
              
                ,
              
               colum_end
              
                )
              
              
                :
              
              
                # 行循環,i 操作
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              i_start
              
                ,
              
               i_end
              
                )
              
              
                :
              
              
                # 行循環,j操作,每次按列尋找
              
              
                for
              
               j 
              
                in
              
              
                range
              
              
                (
              
              i_start
              
                ,
              
               i_end
              
                )
              
              
                :
              
              
                if
              
              
                (
              
              
                (
              
              self
              
                .
              
              board
              
                [
              
              colum
              
                ]
              
              
                [
              
              i
              
                ]
              
              
                ==
              
               self
              
                .
              
              board
              
                [
              
              colum_start
              
                ]
              
              
                [
              
              j
              
                ]
              
              
                if
              
               i 
              
                !=
              
               j 
              
                else
              
              
                False
              
              
                )
              
              \
                        
              
                or
              
              
                (
              
              self
              
                .
              
              board
              
                [
              
              colum
              
                ]
              
              
                [
              
              i
              
                ]
              
              
                ==
              
               self
              
                .
              
              board
              
                [
              
              colum_start 
              
                +
              
              
                1
              
              
                ]
              
              
                [
              
              j
              
                ]
              
              
                if
              
              
                (
              
              
                (
              
              i 
              
                !=
              
               j
              
                )
              
              
                and
              
              
                (
              
              colum 
              
                !=
              
               colum_start 
              
                +
              
              
                1
              
              
                )
              
              
                )
              
              
                else
              
              
                False
              
              
                )
              
              \
                        
              
                or
              
              
                (
              
              self
              
                .
              
              board
              
                [
              
              colum
              
                ]
              
              
                [
              
              i
              
                ]
              
              
                ==
              
               self
              
                .
              
              board
              
                [
              
              colum_start 
              
                +
              
              
                2
              
              
                ]
              
              
                [
              
              j
              
                ]
              
              
                if
              
              
                (
              
              
                (
              
              i 
              
                !=
              
               j
              
                )
              
              
                and
              
              
                (
              
              colum 
              
                !=
              
               colum_start 
              
                +
              
              
                2
              
              
                )
              
              
                )
              
              
                else
              
              
                False
              
              
                )
              
              
                )
              
              \
                            
              
                and
              
              
                ord
              
              
                (
              
              self
              
                .
              
              board
              
                [
              
              colum
              
                ]
              
              
                [
              
              i
              
                ]
              
              
                )
              
              
                !=
              
              
                46
              
              
                :
              
              
                # ord(), 返回元素的數值,用它來排除符號相等的問題
              
              
                return
              
              
                False
              
              
                return
              
              
                True
              
              
                def
              
              
                nine
              
              
                (
              
              self
              
                )
              
              
                :
              
              
                """
            在每一個以粗實線分隔的 3x3 宮內只能出現一次
        """
              
              
                # 三個box, 第1行
              
              
        result_1 
              
                =
              
               self
              
                .
              
              box
              
                (
              
              
                0
              
              
                ,
              
              
                3
              
              
                ,
              
              
                0
              
              
                ,
              
              
                3
              
              
                )
              
              
        result_2 
              
                =
              
               self
              
                .
              
              box
              
                (
              
              
                0
              
              
                ,
              
              
                3
              
              
                ,
              
              
                3
              
              
                ,
              
              
                6
              
              
                )
              
              
        result_3 
              
                =
              
               self
              
                .
              
              box
              
                (
              
              
                0
              
              
                ,
              
              
                3
              
              
                ,
              
              
                6
              
              
                ,
              
              
                9
              
              
                )
              
              
                # 三個box, 第2行
              
              
        result_4 
              
                =
              
               self
              
                .
              
              box
              
                (
              
              
                3
              
              
                ,
              
              
                6
              
              
                ,
              
              
                0
              
              
                ,
              
              
                3
              
              
                )
              
              
        result_5 
              
                =
              
               self
              
                .
              
              box
              
                (
              
              
                3
              
              
                ,
              
              
                6
              
              
                ,
              
              
                3
              
              
                ,
              
              
                6
              
              
                )
              
              
        result_6 
              
                =
              
               self
              
                .
              
              box
              
                (
              
              
                3
              
              
                ,
              
              
                6
              
              
                ,
              
              
                6
              
              
                ,
              
              
                9
              
              
                )
              
              
                # 三個box, 第3行
              
              
        result_7 
              
                =
              
               self
              
                .
              
              box
              
                (
              
              
                6
              
              
                ,
              
              
                9
              
              
                ,
              
              
                0
              
              
                ,
              
              
                3
              
              
                )
              
              
        result_8 
              
                =
              
               self
              
                .
              
              box
              
                (
              
              
                6
              
              
                ,
              
              
                9
              
              
                ,
              
              
                3
              
              
                ,
              
              
                6
              
              
                )
              
              
        result_9 
              
                =
              
               self
              
                .
              
              box
              
                (
              
              
                6
              
              
                ,
              
              
                9
              
              
                ,
              
              
                6
              
              
                ,
              
              
                9
              
              
                )
              
              
                if
              
               result_1 
              
                ==
              
               result_2 
              
                ==
              
               result_3 \
                
              
                ==
              
               result_4 
              
                ==
              
               result_5 
              
                ==
              
               result_6 \
                
              
                ==
              
               result_7 
              
                ==
              
               result_8 
              
                ==
              
               result_9 \
                
              
                ==
              
              
                True
              
              
                :
              
              
                return
              
              
                True
              
              
                else
              
              
                :
              
              
                return
              
              
                False
              
              
                def
              
              
                isValidSudoku
              
              
                (
              
              self
              
                )
              
              
                :
              
              
        result_row 
              
                =
              
               self
              
                .
              
              row
              
                (
              
              
                )
              
              
        result_colum 
              
                =
              
               self
              
                .
              
              colum
              
                (
              
              
                )
              
              
        result_nine 
              
                =
              
               self
              
                .
              
              nine
              
                (
              
              
                )
              
              
                if
              
               result_row 
              
                ==
              
               result_colum 
              
                ==
              
               result_nine 
              
                ==
              
              
                True
              
              
                :
              
              
                return
              
              
                True
              
              
                else
              
              
                :
              
              
                return
              
              
                False
              
              
                def
              
              
                main
              
              
                (
              
              
                )
              
              
                :
              
              
                """
        主函數
    """
              
              
    board 
              
                =
              
              
                [
              
              
                [
              
              
                "5"
              
              
                ,
              
              
                "3"
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "7"
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "6"
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "1"
              
              
                ,
              
              
                "9"
              
              
                ,
              
              
                "5"
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "."
              
              
                ,
              
              
                "9"
              
              
                ,
              
              
                "8"
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "6"
              
              
                ,
              
              
                "."
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "8"
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "6"
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "3"
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "4"
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "8"
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "3"
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "1"
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "7"
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "2"
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "6"
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "."
              
              
                ,
              
              
                "6"
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "2"
              
              
                ,
              
              
                "8"
              
              
                ,
              
              
                "."
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "4"
              
              
                ,
              
              
                "1"
              
              
                ,
              
              
                "9"
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "5"
              
              
                ]
              
              
                ,
              
              
                [
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "8"
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "."
              
              
                ,
              
              
                "7"
              
              
                ,
              
              
                "9"
              
              
                ]
              
              
                ]
              
              
    sol 
              
                =
              
               Solution
              
                (
              
              board
              
                )
              
              

    result 
              
                =
              
               sol
              
                .
              
              isValidSudoku
              
                (
              
              
                )
              
              
                print
              
              
                (
              
              result
              
                )
              
              
                if
              
               __name__ 
              
                ==
              
              
                '__main__'
              
              
                :
              
              
    main
              
                (
              
              
                )
              
            
          

旋轉圖像(zip函數,map函數)

            
              
                """
    功能:給定一個 n × n 的二維矩陣表示一個圖像。
        將圖像順時針旋轉 90 度。
        你必須在原地旋轉圖像,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉圖像。
    eg:
        給定 matrix =
        [
          [1,2,3],
          [4,5,6],
          [7,8,9]
        ],

        變為:
        [
          [7,4,1],
          [8,5,2],
          [9,6,3]
        ]

        zip 函數的用法:
            >>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

            >>> list(zip(*a))
            [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

            >>> map(list,zip(*a))
            [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
            而我們想要的結果是[[7, 4, 1], [8, 5, 2], [9, 6, 3]],只需要將每行reverse即可

        總結:對于二維數組,zip(*a) 將縱向壓縮數組,打包為元組的列表
             map( func, seq1[, seq2...] )
            Python函數式編程中的map()函數是將func作用于seq中的每一個元素,并用一個列表給出返回值


"""
              
              
                import
              
               numpy 
              
                as
              
               np



              
                class
              
              
                Solution
              
              
                (
              
              
                object
              
              
                )
              
              
                :
              
              
                def
              
              
                rotate
              
              
                (
              
              self
              
                ,
              
               matrix
              
                )
              
              
                :
              
              

        mat_map 
              
                =
              
              
                list
              
              
                (
              
              
                map
              
              
                (
              
              
                list
              
              
                ,
              
              
                zip
              
              
                (
              
              
                *
              
              matrix
              
                )
              
              
                )
              
              
                )
              
              
        mat 
              
                =
              
               np
              
                .
              
              array
              
                (
              
              matrix
              
                )
              
              
        row_n 
              
                =
              
               mat
              
                .
              
              shape
              
                [
              
              
                0
              
              
                ]
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              row_n
              
                )
              
              
                :
              
              
            mat_map
              
                [
              
              i
              
                ]
              
              
                .
              
              reverse
              
                (
              
              
                )
              
              
                return
              
               mat_map



              
                def
              
              
                main
              
              
                (
              
              
                )
              
              
                :
              
              
                """
        主函數
    """
              
              

    matrix 
              
                =
              
              
                [
              
              
                [
              
              
                1
              
              
                ,
              
              
                2
              
              
                ,
              
              
                3
              
              
                ]
              
              
                ,
              
              
                [
              
              
                4
              
              
                ,
              
              
                5
              
              
                ,
              
              
                6
              
              
                ]
              
              
                ,
              
              
                [
              
              
                7
              
              
                ,
              
              
                8
              
              
                ,
              
              
                9
              
              
                ]
              
              
                ]
              
              
    sol 
              
                =
              
               Solution
              
                (
              
              
                )
              
              
    result 
              
                =
              
               sol
              
                .
              
              rotate
              
                (
              
              matrix
              
                )
              
              
                print
              
              
                (
              
              result
              
                )
              
              
                if
              
               __name__ 
              
                ==
              
              
                '__main__'
              
              
                :
              
              
    main
              
                (
              
              
                )
              
            
          

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 安远县| 贵南县| 刚察县| 县级市| 襄城县| 青阳县| 威信县| 博乐市| 苏尼特左旗| 礼泉县| 利津县| 丹棱县| 阳泉市| 咸阳市| 安吉县| 循化| 潢川县| 通榆县| 遂川县| 读书| 理塘县| 万山特区| 宝应县| 建水县| 右玉县| 七台河市| 蛟河市| 闸北区| 榆树市| 郎溪县| 滕州市| 金秀| 陇南市| 勐海县| 郸城县| 定南县| 文登市| 黄大仙区| 九龙城区| 淮滨县| 龙海市|