LeetCode 題目-1/7/9 (python實現)
阿新 • • 發佈:2019-01-06
作為要準備踏入碼農行業的人來說,要準備校招,怎麼能不去刷刷LeetCode呢?
1. 兩數之和
- 題目要求:
給定一個整數陣列 nums 和一個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應一個答案。但是,你不能重複利用這個陣列中同樣的元素。 - 示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
- 分析:
訪問兩邊陣列,第一遍用target-num[i],第二遍找target-num[i]是否存在nums,找到就返回這兩個組成的數字。
class Solution: def twoSum(self,num,target): for i in range(0,len(num)): a =target-num[i] if a in num: y =num.index(a) if i == y: continue else: return i,y break else: continue
7. 整數反轉
- 題目要求:
給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。 - 示例:
輸入: 123
輸出: 321
輸入: -123
輸出: -321
輸入: 120
輸出: 21
注意:設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−2××31, 2××31 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。
- 分析:
根據提示的注意,首先判斷範圍,再按正負數依次判斷。通過取餘數反轉數字。
class Solution: def twoSum(self,num,target): for i in range(0,len(num)): a =target-num[i] if a in num: y =num.index(a) if i == y: continue else: return i,y break else: continue
9. 迴文數
-
題目要求:
判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。 -
示例:
輸入: 121
輸出: true
輸入: -121
輸出: false
解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個迴文數。
輸入: 10
輸出: false
解釋: 從右向左讀, 為 01 。因此它不是一個迴文數。
- 分析:
方法一:根據題目7整數反轉進行解題
class Solution:
def isPalindrome(self,x):
"""
:rtype: bool
"""
if(x<0):
return False
else:
renum = 0
t = x
while(t!=0):
renum = renum*10+t%10
t = t//10
if(renum == x):
return True
else:
return False
方法二 以字串的形式進行前後對應位置的比較判斷
class Solution:
def isPalindrome(self,x):
"""
:rtype: bool
"""
if(x<0):
return False
else:
y = str(x)
z = []
for i in y:
z.append(i)
for t in range(0,len(z)//2):
if(z[t]!=z[len(z)-1-t]):
return False
return True