Skip to content

python隨手記

leetcode 520

題目: 判斷第一個字大寫,或是全部大寫,或是全部小寫

leetcode 1184

題目: 一個環狀巴士要求最短距離 可以使用high order function sum

leetcode 264

題目: 判斷數字是否符合條件
小題醒:

  1. range() 與 list slice 一樣 前閉後開
    如range(1,n+1) 才是 [1,n+1]
  2. 注意class 中呼叫自己函式要self.method
    創造自己函式時 傳入參數要有self def f(self , …):
  3. 注意 range(2,2)是不會有東西的!!!
    質數檢查要 range(2,int(num**0.5)+1)
  4. 注意python常常會轉成float
    相除就要記的int(p/n)
leetcode 997

題目: 就是演算法經典的名人問題 可使用list comprehension製造2D 常數list
temp = [ 0 for i in range(N)]
relation = [temp for i in range(N)]
注意可以用 常數來創建list

leetcode 888

題目: 代數題 思路:
法1 O(n^2) 暴力解
法2 O(nlogn) 二分法暴力解
法3 O(n) 轉換成只找一個數,那就可以使用map 找!!!
(A-B = 2(a-b) == > (A+2b-B)/2=a

注意A.sort()回傳的是reference,可直接使用A

set搜尋會比list快很多

leetcode 171、168

python中轉換ASCII的方法是
ord(Word) 的ord函數
chr(65) = “A” //not str(65) !!

review
python有 ord 、chr、 len 、max、min、sum等好用函數

leetcode 575

C語言除法是取下高斯
python則有//運算子達到一樣目的

即 7/2 =3.5
int(7/2) == 7//2

leetcode 543

注意python回傳值除各式物件,還可以是複數個
若只用單一去接,會回傳tuple
可以用逗號寫法去接
*除單一變數去接會回傳tuple之外,若數量對不上會噴error
如 A,B = haha(a,b,c)

leetcode172

python log 用法
import math
math.log (5) == ln5
math.log(5,2) == log2(5)

leetcode 1089
  1. list.index(ele) 以回傳元素index
  2. python物件類似指標
    在function內
    arr = arr[::-1] #是不會改動到arr的
    arr[1] = 0 #會改動到arr
dictionary comprehension

字典也可以comprehension製造

應用:拿來建英文小寫字母字典表
其中
import string
string.ascii_lowercase是小寫list
注意:
table = {i for i in xxx : {} } (X pattern要放最前面)
table = {i: {} for i in xxx} (V)

關於set

set為甚麼會快? 使用hash 原理

set為甚麼可以去重複?
使用 hash => hash值不同 == 兩者不一樣
hash值一樣 => 檢查兩者是不是真不一樣 (recap : collision)

set comprehension: {i for i in [1,2,3]}

python有很多前閉後開的設計

range(1, n+1) 才是 [1,n]
list [a:b+1] 才是 list[a]~list[b]

python物件

變數本身不是reference,但物件內容是 (類似指標變數) 如 A = [1]