面試題目memo

2021-09-01 15:18:10 字數 1634 閱讀 7506

[color=red]題目都是網上看到的。試著解答一下,全當腦力訓練。以後會陸續追加,持續更新本帖。[/color]

95.華為面試題

1 判斷一字串是不是對稱的,如:abccba

[color=darkblue]思路:題目的解答是一目了然的。如下偽**。

boolean check(str)

}return true;

}

[/color]

2.用遞迴的方法判斷整數組a[n]是不是公升序排列

[color=darkblue]思路:先判斷當前元素以後的子陣列是否為公升序,若是則只需判斷當前元素是否<=子陣列的第乙個元素即可。如下偽**。

boolean check(int arr, int s)

return false;

}

[/color]

3. 給出乙個函式來輸出乙個字串的所有排列。

[color=darkblue]思路:先給乙個例子,aabc,則所有的排序如下:

a開頭:aabc, aacb, abac, abca, acab, acba

b開頭:baac, baca, bcaa

c開頭:caab, caba, cbaa

演算法描述:

1、對字串進行預處理,得到不重複字符集以及各個字元出現頻率。

例如得到[a,b,c], [2,1,1]

2、設字符集的第乙個元素作為當前元素。例如元素a。

3、如果當前元素頻率大於0,則把當前元素放入結果快取裡,此時字元的頻率需要-1。

如果當前元素頻率等於0, 執行5步。

例如取出a放入結果快取,則各個變數變成如下:

頻率集:[1,1,1]

結果快取:[a]

4、3步處理後,結果快取長度會增加1,只需計算剩餘字符集以及其相應頻率條件的下的所有排列,

把每個排序加到當前結果快取後面,即可得到以當前結果快取為字首的所有結果排列。

【計算剩餘字符集以及其相應頻率條件的下的所有排列】為原問題的子問題,只需遞迴執行除1步外的各步即可。

具體操作為:

1)拷貝當前頻率集作為遞迴引數。

2)執行遞迴處理

5、把字符集的下乙個元素設為當前元素,重複3步的處理[/color]

[b]4. 最大子陣列和[/b]

遞迴演算法:

public class maxsubarraysum

private void maxsubarraysum( int a, int n )

if ( a[n - 1] > maxsumincluden )

return;

}maxsubarraysum( a, n - 1 );

if ( a[n - 1] + maxsumincluden > a[n - 1] )

else

if ( result < maxsumincluden )

}public static void main(string args);

system.out.println("maxsubarraysum=" + new maxsubarraysum().execute( a ));}}

C 面試題目

1 ispostback正確的是 首次載入頁面的ispostback的值為false 重新整理頁面後的ispostback的值為true 第三個選項忘了 2 頁面傳值的幾種方式 request.querystring session server.transfer 3 什麼是瀏覽器的 無狀態 如何解...

面試題目總結

1.char p和char p的區別。1 char getstring void void main 2 char getstring void void main 為什麼 1 輸出的是亂碼,2 能夠輸出 hello world?hello world 作為靜態字串實際上儲存在文字常量區 參見 棧和...

c 面試題目

摘要 12個c語言面試題,涉及指標 程序 運算 結構體 函式 記憶體,看看你能做出幾個!1.gets 函式 問 請找出下面 裡的問題 include int main void 答 上面 裡的問題在於函式 gets 的使用,這個函式從 stdin 接收乙個字串而不檢查它所複製的快取的容積,這可能會導...