演算法程式設計題小技巧

2021-09-19 11:31:48 字數 1259 閱讀 1935

當題目中涉及到圓、手鍊等迴圈的,可以通過陣列的移動,乙個迴圈遍歷所有的可能。

for

(var i =

0; i < len ; i++

)

當題目求乙個滿足條件的字串時,可以利用乙個字串串長度作為迴圈條件,內部一層迴圈可以利用起始位置做迴圈,結束位置利用起始和長度計算

for

(var k =

3; k < len; k++

)}

當明顯題目要求複雜度時

放棄用函式 sort

() ,複雜度最少也要 o

(nlogn),最慢 n^2;

math.

max(

) 和 math.

min(

) 需要 o

(n) ,可以酌情使用。

用位運算做加法

獲得加法的個位數:用異或^  

比如 5+7

:101

^111

=010 ,也就是個位數2 ,和不超過10的直接就是結果2+5

:010

+101

=111

;獲得進製:相當於兩個數做 & 操作,再向左移一位得到

101&

111=

101101

<<1=

1010 結果5

+7的進製是10

迴圈上面兩步,直到進製為0

function

add(num1, num2)

return num1

}

注意splice返回的是陣列,轉數字可以簡單的直接num - '0'.

動態規劃:最長回文字串

尋找陣列所有的逆序對,在不考慮時間複雜度的情況下,自己想的有以下幾種:但都是n^2

1、遍歷陣列,雙重迴圈進行比較

2、先對陣列arr1排序(小到大),然後對排序後的陣列arr2遍歷,找到原陣列arr1的該值的位置index,

這個index就是前面比該數大的數值個數,在arr1中刪除這個數,迴圈。。。

3、跟2一樣,只是不排序,通過找最小值來進行

function

inversepairs

(data)

return count;

}

刷題演算法小技巧

1.大數取餘 對於較大數快速取餘 引數 char s 為儲存大數的陣列 modnumber 為mod long long modnumber char s,int modnumber return sum 2.快速冪 極大數 取餘 對於較大數快速取餘 引數 a的b次方 對 c 取餘 long lon...

程式設計小技巧

define conn x,y x y define tochar x x define tostring x x x y表示什麼?表示x連線y,舉例說 int n conn 123,456 結果就是n 123456 char str conn asdf adf 結果就是 str asdfadf 怎...

程式設計小技巧

1.如何通過輸入一組任意長度的數字序列?char inchar n int num n int i 0 int len 0 scanf s inchar len strlen inchar printf len d len for i 0 i 2.scanf gets 與getchar 的區別 ge...