Python學習之LeetCode刷題之路——簡單題【一、七、9】

一、兩數之和

給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和爲目標值的那 兩個 整數,並返回他們的數組下標。數組

你能夠假設每種輸入只會對應一個答案。可是,你不能重複利用這個數組中一樣的元素。函數

示例:spa

給定 nums = [2, 7, 11, 15], target = 9code

由於 nums[0] + nums[1] = 2 + 7 = 9
因此返回 [0, 1]對象

代碼blog

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        dic = {}
        for index,num in enumerate(nums):  
            sub = target - num
            if sub in dic:
                return [dic[sub],index]
            else:
                dic[num] = index
            
        

知識點索引

一、enumerate() 函數用於將一個可遍歷的數據對象(如列表、元組或字符串)組合爲一個索引序列,同時列出數據和數據下標,通常用在 for 循環當中。
>>>seq = ['one', 'two', 'three']
>>> for i, element in enumerate(seq):
...     print i, element
... 
0 one
1 two
2 three

 


七、整數反轉

給出一個 32 位的有符號整數,你須要將這個整數中每位上的數字進行反轉。three

示例 1:ip

輸入: 123
輸出: 321
 示例 2:element

輸入: -123
輸出: -321
示例 3:

輸入: 120
輸出: 21
注意:

假設咱們的環境只能存儲得下 32 位的有符號整數,則其數值範圍爲 [−231,  231 − 1]。請根據這個假設,若是反轉後整數溢出那麼就返回 0。

代碼:

class Solution:
    def reverse(self, x: int) -> int:
        """
        ret:返回舊的翻轉值
        temp:保存臨時中間值
        """
        if x == 0:
            return x
        str_x = str(x)
        x = ''
        if str_x[0] == '-':
            x += '-'
        x += str_x[-1::-1].lstrip('0').rstrip("-")
        x = int(x)
        if -2**31<x<2**31-1:
            return x
        return 0
        

知識點總結:

1、list[::n]
第一個冒號表示起始處理位置,第二個冒號表示終止處理位置,不包括該位置,n表示步長,每隔幾個取一次。
若是n爲負號,表示從後向前處理,a = list[::-1],表示逆置
二、strip: 用來去除頭尾字符、空白符(包括\n、\r、\t、' ',即:換行、回車、製表符、空格)
lstrip:用來去除開頭字符、空白符(包括\n、\r、\t、' ',即:換行、回車、製表符、空格)
rstrip:用來去除結尾字符、空白符(包括\n、\r、\t、' ',即:換行、回車、製表符、空格)
注意:這些函數都只會刪除頭和尾的字符,中間的不會刪除。

九、迴文數

判斷一個整數是不是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是同樣的整數。

示例 1:

輸入: 121
輸出: true
示例 2:

輸入: -121
輸出: false
解釋: 從左向右讀, 爲 -121 。 從右向左讀, 爲 121- 。所以它不是一個迴文數。
示例 3:

輸入: 10
輸出: false
解釋: 從右向左讀, 爲 01 。所以它不是一個迴文數。
進階:

你能不將整數轉爲字符串來解決這個問題嗎?

代碼

class Solution:
    def isPalindrome(self, x: int) -> bool:
        if ((x < 0) | ((x % 10 == 0) & (x != 0))):
            return False
        elif (x < 10):
            return True
        else:
            x_reversed = int(0)
            while(x > x_reversed):
                x_reversed = x_reversed * 10 + x % 10
                x //= 10
            return (x == x_reversed) or (x == x_reversed // 10)
相關文章
相關標籤/搜索