功能:解 [[Maximum subarray problem]]
方法:如果現在累積的子序列和,小於現在指向的數字,就重新開始累計
Time Complexity: O(n)
Space Complexity: O(1)
數學:
如果已知 A[:i] 的 max sum,那麼 A[:i+1] 的 max sum 必定包含或不包含 A[:i] 的 prefix。
reference: https://www.shubo.io/maximum-subarray-problem-kadane-algorithm/
快速記法:
因為你累計的和,比現在的數字小,前面的就沒用了,留現在的就好
硬體中的分支預測器(Branch Prediction)會影響程式的速度
如果loop中的if一直猜錯會降低程式速度
例如下面的程式array有沒有sort,就會影響速度
for (int i = 0; i < N; i++) if (a[i] < P) s += a[i]; https://en.algorithmica.org/hpc/pipelining/branching/
用[[logseq]]後我開始覺得做筆記時輕鬆可維持的,有點像我之前開始記賬或者是健身記錄的時候
我不擅長寫長文,這種隨手記的方式比較適合我。有空時可以再整理成完整文章發布
再加上[[ChatGPT]]的流行我覺得可以從這些零散的筆記中的到資訊
並且使用[[ChatGPT]]幫我整理並潤飾語法