發表文章

目前顯示的是 9月, 2020的文章

Python Notes

圖片
解題 找出所有可能變量, 注意其值域, 以及其不同值的情況下是否需要例外處理 (通常是最小最大值時) 例如找最大值問題, 值域如果是-10~10, init不能是0, 而是要比-10小 迴文 (Palindrome)、異位構詞 (Anagram) 共通特性: 比較的兩個詞, 字母排序後會是一樣的 畫出各種可能情境, 對應的處理結果 (e.g.,) 袋鼠跳躍問題 1. (X1>X2) Y OR N 2. (V1>V2) Y OR N, 得出四個象限, 先初步分析怎麼個別處理 Loop back問題, 善用取餘數(%) 輪流分10顆糖果給3個人, 誰最後拿到?  🡪 10 % 3 = 1 位子互換問題 List 排序 List.sort() 而不使用 newList = sorted(list) 前者為 in-place sort, 後者創新的list, 成本較高 Reverse List.reverse(), in-place method List[::-1] newList = list(reversed(list)) Slice 1D: [from:to:step], 不包含to 2D reverse [[1,2,3] , [4,5,6] , [7,8,9]] 🡪 [(1,4,7) , (2,5,8) , (3,6,9)] Use * and zip to invert the operation and unzip 2D array: zip(*list) Numpy 2D and above: [1 st D, 2 nd D,…], for each [from:to:step] List牽扯移動視窗 + 排序問題 , 一律使用 bisect (import bisect) 增加效率 (不用一直產生視窗、做排序) Bisect用以管理排序後的List (使用前要排序) bisect_left: 找到適合插入的index (同元素前面), O(log n) 可用來判斷某元素在不在list insertPoint = bisect_left(list, num); return list[insertPoint] == num; insoft_left: 找尋並插入適合的index  (同元素前面), O(log n...