變換迴圈變數,降低複雜度

2021-08-15 13:26:53 字數 680 閱讀 3434

在一些問題中,如果適當選擇迴圈變數,將會降低程式的複雜度,例如判斷子串的問題:

判斷字串 s 是不是 t的子串,有兩種方案

方案一

思路:對s中的元素遍歷,根據貪心的思想,搜尋t中第乙個該元素,若不存在,則說明s不是t的子串。注意,s中的元素在t中的相對位置必須保持不變,所以每一次搜尋時,應該從上一次搜尋到的位置處搜尋。

實現:搜尋可以用 cstring 中的strchr函式。

複雜度應該是o(

n2) o(n

2)

int is_sub(char *s,char *t)

else

}return

1;}

方案二

思路:對t中元素遍歷,並與s中當前待比較元素比較。

實現:用

i i

代表s中當前待比較元素的下標。

複雜度是o(

n)' role="presentation" style="position: relative;">o(n

)o(n

);

int is_sub(char *s,char *t)

return

0;}

常見降低圈複雜度方法

圈複雜度計算方式 圈複雜度 cc 判斷條件個數 1其中1代表函式本身的複雜度 關鍵字 if,else if,for,while,case,catch等。對if,if else,if else if for,switch while語句進行簡要說明 之後函式的圈複雜度是所有的語句判斷數加函式本身 常用...

如何降低SQL語句複雜度

sql語句複雜度的優化就是在結果正確的前提下,將複雜 難以維護的sql語句拆分成獨立 易懂的sql片段,當然也要充份利用索引,減少表描的i o次數,盡量避免表搜尋的發生。下面介紹降低sql語句複雜度的幾個建議 1 動態查詢語句 一些應用為了實現客戶端的靈活性,會根據使用者的選擇,動態拼出tsql語句...

複雜度 程式開發中降低複雜度的核心方法

降低複雜度的核心方法主要三個步驟 第一步,暴力解法。在沒有任何時間 空間約束下,完成 任務的開發。沒有太多的套路,只要圍繞你面臨的問題出發,大膽發揮想象去嘗試解決即 無效操作處理。將 中的無效計算 無效儲存剔除,降低時間或空間複雜度。需要學會並掌握遞迴 二分法 排序演算法 動態規劃等常用的演算法思維...