《劍指offer》學習心得第四日

2021-06-22 15:44:43 字數 854 閱讀 1663

一、列印從1到最大的n位數

兩種方法:

1、用字串模擬大數

2、遞迴(**精簡,面試時可以一用)

void print(char number)

//全都為0 什麼都不輸出

if (number[i] == '\0')

return;

//列印剩下的

while (number[i] != '\0')

printf("\n");

}void print1tomaxn(char *number, int n, int index)

for (int i=0; i<10; ++i) }

int main()

二、在o(1)時間內刪除鍊錶節點

注意事項:

1、對鍊錶和刪除節點為空的判斷

2、要刪除的是最後乙個節點(不能和後面的節點進行交換,要用普通方法,遍歷找上乙個節點)

3、只有乙個頭節點

此外為了程式的魯棒性還要驗證要刪除的節點是不是在鍊錶中,這點面試時可以提出。

三、調整陣列順序使奇數字於偶數前面

思路:乙個指向頭的指標,乙個指向尾的指標,頭指標找到第乙個偶數,為指標找到第乙個奇數,然後交換,迴圈結束條件pbegin <  pend

有這道題的啟發是:奇數偶數的判斷可以用函式指標來實現,這樣便於演算法的可擴充性。

四、全排列

void permutation(char *pstr, char *pbegin)

else }

}void permutation(char *pstr)

js學習第四日

事件 作用onclick 滑鼠單擊時觸發 ondblclick 滑鼠雙擊時觸發 onmouseover 滑鼠移到某元素之上時觸發 onmousemove 滑鼠被移動時觸發 onmouseout 滑鼠從某元素移開時觸發 onkeyup 某個鍵盤按鍵上彈時觸發 onkeydown 某個鍵盤按鍵被按下時觸...

劍指offer第四題

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。通過root結點可以把中序遍歷分成兩部分。可以知道左子樹的個數和右子樹的個數。從而求出前序遍歷和中序遍歷相對應的左子樹和右子樹。並通...

劍指offer學習心得 之 反轉鍊錶

題目 定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。在單鏈表的表頭臨時接入乙個節點,然後進行尾插法操作。反轉單鏈表。最好就是提前想好測試用例,寫出 以後再用事先準備好的測試用例進行檢查測試。功能測試 輸入的鍊錶含有多個結點 只有乙個結點 特殊輸入測試 煉表頭結點為null ...