leetcode 520
題目: 判斷第一個字大寫,或是全部大寫,或是全部小寫
leetcode 1184
題目: 一個環狀巴士要求最短距離
可以使用high order function sum
leetcode 264
題目: 判斷數字是否符合條件
小題醒:
- range() 與 list slice 一樣 前閉後開
如range(1,n+1) 才是 [1,n+1] - 注意class 中呼叫自己函式要self.method
創造自己函式時 傳入參數要有self def f(self , …): - 注意 range(2,2)是不會有東西的!!!
質數檢查要 range(2,int(num**0.5)+1) - 注意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
- list.index(ele) 以回傳元素index
- 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]