如題,使用O(n^2)爆搜也會過
也有O(n)的算法,就是區間最大連續和
可以不用O(n^2),使用邏輯判斷可以推導出 左位置,必小於 右位置 => 只需要O( ((n+1)n)/2 )
(身為一位高中生,因該知道這種邏輯)
搜尋方法如下,A1 A2 A3 .......An
1."左值"設在位置1 ,遍歷後方所有的值,當作"右值"。
2."左值"設在位置2 ,遍歷後方所有的值,當作"右值"。
3.以此類推直到"左值"設在位置n,停止搜尋。
ps:"左值": 為要撿起的連續 蘑菇中 最初撿起的那一個
"右值": 為要撿起的連續 蘑菇 中 最後撿起的那一個
如題,使用O(n^2)爆搜也會過
也有O(n)的算法,就是區間最大連續和
可以不用O(n^2),使用邏輯判斷可以推導出 左位置,必小於 右位置 => 只需要O( ((n+1)n)/2 )
(身為一位高中生,因該知道這種邏輯)搜尋方法如下,A1 A2 A3 .......An
1."左值"設在位置1 ,遍歷後方所有的值,當作"右值"。2."左值"設在位置2 ,遍歷後方所有的值,當作"右值"。
3.以此類推直到"左值"設在位置n,停止搜尋。
ps:"左值": 為要撿起的連續 蘑菇中 最初撿起的那一個
"右值": 為要撿起的連續 蘑菇 中 最後撿起的那一個
所以,時間複雜度為: O((n-0)+(n-1)+(n-2)+(n-3)+......+(2)+(1)),可得:O((n+1)n/2)
如題,使用O(n^2)爆搜也會過
也有O(n)的算法,就是區間最大連續和
可以不用O(n^2),使用邏輯判斷可以推導出 左位置,必小於 右位置 => 只需要O( ((n+1)n)/2 )
(身為一位高中生,因該知道這種邏輯)搜尋方法如下,A1 A2 A3 .......An
1."左值"設在位置1 ,遍歷後方所有的值,當作"右值"。2."左值"設在位置2 ,遍歷後方所有的值,當作"右值"。
3.以此類推直到"左值"設在位置n,停止搜尋。
ps:"左值": 為要撿起的連續 蘑菇中 最初撿起的那一個
"右值": 為要撿起的連續 蘑菇 中 最後撿起的那一個
所以,時間複雜度為: O((n-0)+(n-1)+(n-2)+(n-3)+......+(2)+(1)),可得:O((n+1)n/2)
這就是 $O(N^2)$ 喔!