給定一個整數數組 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)