1. 程式人生 > >LeetCode 題目-1/7/9 (python實現)

LeetCode 題目-1/7/9 (python實現)

作為要準備踏入碼農行業的人來說,要準備校招,怎麼能不去刷刷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