cc++筆試題
《cc++筆試題》由會員分享,可在線閱讀,更多相關(guān)《cc++筆試題(17頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、1.數(shù)組中重復(fù)的數(shù)字 找出數(shù)組中重復(fù)的數(shù)字。 在一個長度為 n 的數(shù)組 nums 里的所有數(shù)字都在 0~n-1 的范圍內(nèi)。數(shù)組中某些數(shù)字是重復(fù)的,但不知道有幾個數(shù)字重復(fù)了,也不知道每個數(shù)字重復(fù)了幾次。請找出數(shù)組中任意一個重復(fù)的數(shù)字。 示例 1: 輸入: [2, 3, 1, 0, 2, 5, 3] 輸出:2 或 3 限制: 2 <= n <= 100000 2.用兩個棧實現(xiàn)隊列 用兩個棧實現(xiàn)一個隊列。隊列的聲明如下,請實現(xiàn)它的兩個函數(shù) appendTail 和 deleteHead ,分別完成在隊列尾部插入整數(shù)和在隊列頭部刪除整數(shù)的功能。(若隊列中沒有元素,deleteHe
2、ad 操作返回 -1 ) 示例 1: 輸入: ["CQueue","appendTail","deleteHead","deleteHead"] [[],[3],[],[]] 輸出:[null,null,3,-1] 示例 2: 輸入: ["CQueue","deleteHead","appendTail","appendTail","deleteHead","deleteHead"] [[],[],[5],[2],[],[]] 輸出:[null,-1,null,null,5,2] 提示: · 1 <= values <= 10000 · 最多會對 appendTail
3、、deleteHead 進行 10000 次調(diào)用 3.二維數(shù)組中的查找, 在一個 n * m 的二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數(shù),輸入這樣的一個二維數(shù)組和一個整數(shù),判斷數(shù)組中是否含有該整數(shù)。 示例: 現(xiàn)有矩陣 matrix 如下: [ [1, ? 4, 7, 11, 15], [2, ? 5, 8, 12, 19], [3, ? 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ] 給定 target = 5,返回 true。 給定
4、 target = 20,返回 false。 限制: 0 <= n <= 1000 0 <= m <= 1000 4.從尾到頭打印鏈表, 輸入一個鏈表的頭節(jié)點,從尾到頭反過來返回每個節(jié)點的值(用數(shù)組返回)。 示例 1: 輸入:head = [1,3,2] 輸出:[2,3,1] 限制: 0 <= 鏈表長度 <= 10000 5.斐波那契數(shù)列, 寫一個函數(shù),輸入 n ,求斐波那契(Fibonacci)數(shù)列的第 n 項。斐波那契數(shù)列的定義如下: F(0) = 0, ? F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波
5、那契數(shù)列由 0 和 1 開始,之后的斐波那契數(shù)就是由之前的兩數(shù)相加而得出。 答案需要取模 1e9+7(1000000007),如計算初始結(jié)果為:1000000008,請返回 1。 示例 1: 輸入:n = 2 輸出:1 示例 2: 輸入:n = 5 輸出:5 提示: · 0 <= n <= 100 6.青蛙跳臺階問題 一只青蛙一次可以跳上1級臺階,也可以跳上2級臺階。求該青蛙跳上一個 n 級的臺階總共有多少種跳法。 答案需要取模 1e9+7(1000000007),如計算初始結(jié)果為:1000000008,請返回 1。 示例 1: 輸入:n = 2 輸出:2 示
6、例 2: 輸入:n = 7 輸出:21 示例 3: 輸入:n = 0 輸出:1 提示: · 0 <= n <= 100 7.旋轉(zhuǎn)數(shù)組的最小數(shù)字 把一個數(shù)組最開始的若干個元素搬到數(shù)組的末尾,我們稱之為數(shù)組的旋轉(zhuǎn)。輸入一個遞增排序的數(shù)組的一個旋轉(zhuǎn),輸出旋轉(zhuǎn)數(shù)組的最小元素。例如,數(shù)組 [3,4,5,1,2] 為 [1,2,3,4,5] 的一個旋轉(zhuǎn),該數(shù)組的最小值為1。 示例 1: 輸入:[3,4,5,1,2] 輸出:1 示例 2: 輸入:[2,2,2,0,1] 輸出:0 8.二進制中1的個數(shù) 請實現(xiàn)一個函數(shù),輸入一個整數(shù),輸出該數(shù)二進制表示中 1 的個數(shù)。例
7、如,把 9 表示成二進制是 1001,有 2 位是 1。因此,如果輸入 9,則該函數(shù)輸出 2。 示例 1: 輸入:00000000000000000000000000001011 輸出:3 解釋:輸入的二進制串 00000000000000000000000000001011 中,共有三位為 '1'。 示例 2: 輸入:00000000000000000000000010000000 輸出:1 解釋:輸入的二進制串 00000000000000000000000010000000 中,共有一位為 '1'。 示例 3: 輸入:1111111111111111111111111
8、1111101 輸出:31 解釋:輸入的二進制串 11111111111111111111111111111101 中,共有 31 位為 '1'。 9.反轉(zhuǎn)鏈表 難度簡單100收藏分享切換為英文關(guān)注反饋 定義一個函數(shù),輸入一個鏈表的頭節(jié)點,反轉(zhuǎn)該鏈表并輸出反轉(zhuǎn)后鏈表的頭節(jié)點。 示例: 輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2->1->NULL 限制: 0 <= 節(jié)點個數(shù) <= 5000 10反轉(zhuǎn)鏈表 難度簡單100收藏分享切換為英文關(guān)注反饋 定義一個函數(shù),輸入一個鏈表的頭節(jié)點,反轉(zhuǎn)該鏈表并輸出反轉(zhuǎn)后鏈表的頭節(jié)點。 示例:
9、 輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2->1->NULL 限制: 0 <= 節(jié)點個數(shù) <= 5000 11.刪除鏈表的節(jié)點 給定單向鏈表的頭指針和一個要刪除的節(jié)點的值,定義一個函數(shù)刪除該節(jié)點。 返回刪除后的鏈表的頭節(jié)點。 注意:此題對比原題有改動 示例 1: 輸入: head = [4,5,1,9], val = 5 輸出: [4,1,9] 解釋: 給定你鏈表中值為 5 的第二個節(jié)點,那么在調(diào)用了你的函數(shù)之后,該鏈表應(yīng)變?yōu)?4 -> 1 -> 9. 示例 2: 輸入: head = [4,5,1,9], val = 1
10、輸出: [4,5,9] 解釋: 給定你鏈表中值為 1 的第三個節(jié)點,那么在調(diào)用了你的函數(shù)之后,該鏈表應(yīng)變?yōu)?4 -> 5 -> 9. 說明: · 題目保證鏈表中節(jié)點的值互不相同 · 若使用 C 或 C++ 語言,你不需要 free 或 delete 被刪除的節(jié)點 12. 調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)前面 輸入一個整數(shù)數(shù)組,實現(xiàn)一個函數(shù)來調(diào)整該數(shù)組中數(shù)字的順序,使得所有奇數(shù)位于數(shù)組的前半部分,所有偶數(shù)位于數(shù)組的后半部分。 示例: 輸入:nums = [1,2,3,4] 輸出:[1,3,2,4] 注:[3,1,2,4] 也是正確的答案之一。 提示: 1. 1 <= num
11、s.length <= 50000 2. 1 <= nums[i] <= 10000 13. 鏈表中倒數(shù)第k個節(jié)點 輸入一個鏈表,輸出該鏈表中倒數(shù)第k個節(jié)點。為了符合大多數(shù)人的習(xí)慣,本題從1開始計數(shù),即鏈表的尾節(jié)點是倒數(shù)第1個節(jié)點。例如,一個鏈表有6個節(jié)點,從頭節(jié)點開始,它們的值依次是1、2、3、4、5、6。這個鏈表的倒數(shù)第3個節(jié)點是值為4的節(jié)點。 示例: 給定一個鏈表: 1->2->3->4->5, 和 k = 2. ? 返回鏈表 4->5. 14. 二叉樹的鏡像 請完成一個函數(shù),輸入一個二叉樹,該函數(shù)輸出它的鏡像。 例如輸入: ? ? ? ? 4 ? ? ? ? /
12、 \ ? ? ? 2 ? 7 ? ? / \ ? / \ ? 1 ? 3 6 ? 9 鏡像輸出: ? ? ? ? 4 ? ? ? ? / \ ? ? ? 7 ? 2 ? ? / \ ? / \ ? 9 6 ? 3 1 示例 1: 輸入:root = [4,2,7,1,3,6,9] 輸出:[4,7,2,9,6,3,1] 限制: 0 <= 節(jié)點個數(shù) <= 1000 15. 順時針打印矩陣 輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數(shù)字。 示例 1: 輸入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 輸出:[
13、1,2,3,6,9,8,7,4,5] 示例 2: 輸入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 輸出:[1,2,3,4,8,12,11,10,9,5,6,7] 限制: · 0 <= matrix.length <= 100 · 0 <= matrix[i].length <= 100 16. 數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字 數(shù)組中有一個數(shù)字出現(xiàn)的次數(shù)超過數(shù)組長度的一半,請找出這個數(shù)字。 你可以假設(shè)數(shù)組是非空的,并且給定的數(shù)組總是存在多數(shù)元素。 示例 1: 輸入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 輸出:
14、 2 限制: 1 <= 數(shù)組長度 <= 50000 17. 最小的k個數(shù) 輸入整數(shù)數(shù)組 arr ,找出其中最小的 k 個數(shù)。例如,輸入4、5、1、6、2、7、3、8這8個數(shù)字,則最小的4個數(shù)字是1、2、3、4。 示例 1: 輸入:arr = [3,2,1], k = 2 輸出:[1,2] 或者 [2,1] 示例 2: 輸入:arr = [0,1,2,1], k = 1 輸出:[0] 限制: · 0 <= k <= arr.length <= 10000 · 0 <= arr[i] <= 10000 18. 連續(xù)子數(shù)組的最大和 輸入一個整型數(shù)組,數(shù)組中的一個或連續(xù)多
15、個整數(shù)組成一個子數(shù)組。求所有子數(shù)組的和的最大值。 要求時間復(fù)雜度為O(n)。 示例1: 輸入: nums = [-2,1,-3,4,-1,2,1,-5,4] 輸出: 6 解釋: 連續(xù)子數(shù)組 [4,-1,2,1] 的和最大,為 6。 提示: · 1 <= arr.length <= 10^5 · -100 <= arr[i] <= 100 19. 第一個只出現(xiàn)一次的字符 在字符串 s 中找出第一個只出現(xiàn)一次的字符。如果沒有,返回一個單空格。 s 只包含小寫字母。 示例: s = "abaccdeff" 返回 "b" ? s = "" 返回 " " 限制: 0
16、 <= s 的長度 <= 50000 20. 兩個鏈表的第一個公共節(jié)點 輸入兩個鏈表,找出它們的第一個公共節(jié)點。 如下面的兩個鏈表: 在節(jié)點 c1 開始相交。 示例 1: 輸入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 輸出:Reference of the node with value = 8 輸入解釋:相交節(jié)點的值為 8 (注意,如果兩個列表相交則不能為 0)。從各自的表頭開始算起,鏈表 A 為 [4,1,8,4,5],鏈表 B 為 [5,0
17、,1,8,4,5]。在 A 中,相交節(jié)點前有 2 個節(jié)點;在 B 中,相交節(jié)點前有 3 個節(jié)點。 示例 2: 輸入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1 輸出:Reference of the node with value = 2 輸入解釋:相交節(jié)點的值為 2 (注意,如果兩個列表相交則不能為 0)。從各自的表頭開始算起,鏈表 A 為 [0,9,1,2,4],鏈表 B 為 [3,2,4]。在 A 中,相交節(jié)點前有 3 個節(jié)點;在 B 中,相交節(jié)點前有 1 個節(jié)點。
18、 示例 3: 輸入:intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2 輸出:null 輸入解釋:從各自的表頭開始算起,鏈表 A 為 [2,6,4],鏈表 B 為 [1,5]。由于這兩個鏈表不相交,所以 intersectVal 必須為 0,而 skipA 和 skipB 可以是任意值。 解釋:這兩個鏈表不相交,因此返回 null。 注意: · 如果兩個鏈表沒有交點,返回 null. · 在返回結(jié)果后,兩個鏈表仍須保持原有的結(jié)構(gòu)。 · 可假定整個鏈表結(jié)構(gòu)中沒有循環(huán)。 · 程序盡量滿足
19、 O(n) 時間復(fù)雜度,且僅用 O(1) 內(nèi)存。 21. 在排序數(shù)組中查找數(shù)字 I 統(tǒng)計一個數(shù)字在排序數(shù)組中出現(xiàn)的次數(shù)。 示例 1: 輸入: nums = [5,7,7,8,8,10], target = 8 輸出: 2 示例 2: 輸入: nums = [5,7,7,8,8,10], target = 6 輸出: 0 限制: 0 <= 數(shù)組長度 <= 50000 22. 二叉搜索樹的第k大節(jié)點 給定一棵二叉搜索樹,請找出其中第k大的節(jié)點。 示例 1: 輸入: root = [3,1,4,null,2], k = 1 ? 3 / \ 1 ? 4 \ ?
20、2 輸出: 4 示例 2: 輸入: root = [5,3,6,2,4,null,null,1], k = 3 ? ? ? 5 ? ? / \ ? ? 3 ? 6 ? / \ ? 2 ? 4 / 1 輸出: 4 限制: 1 ≤ k ≤ 二叉搜索樹元素個數(shù) 23. 撲克牌中的順子 從撲克牌中隨機抽5張牌,判斷是不是一個順子,即這5張牌是不是連續(xù)的。2~10為數(shù)字本身,A為1,J為11,Q為12,K為13,而大、小王為 0 ,可以看成任意數(shù)字。A 不能視為 14。 示例 1: 輸入: [1,2,3,4,5] 輸出: True 示例 2: 輸入: [0,0,1
21、,2,5] 輸出: True 限制: 數(shù)組長度為 5 數(shù)組的數(shù)取值為 [0, 13] . 24. 從上到下打印二叉樹 從上到下打印出二叉樹的每個節(jié)點,同一層的節(jié)點按照從左到右的順序打印。 例如: 給定二叉樹: [3,9,20,null,null,15,7], ? 3 ? / \ 9 20 ? / \ ? 15 ? 7 返回: [3,9,20,15,7] 提示: 1. 節(jié)點總數(shù) <= 1000 25.輸入整數(shù)a和b,若a*a+b*b大于100,則輸出a*a+b*b百位以上的數(shù)字,否則輸出兩數(shù)之和 輸入:一行,輸入兩個整數(shù)a、b,中間用單個空格隔開。 輸出:
22、一行,一個整數(shù),a*a+b*b百位以上的數(shù)字或者輸出兩數(shù)之和。
樣例輸入1:5 6
樣例輸出1:11
樣例輸入2:6 9
樣例輸出2:117
26.設(shè)計一個界面
在編輯框中輸入字符串,格式為:“#,#,#,#;#,#,#,#;”,例如:3,5,6;7,8;
點擊按鈕的時候,進行字符串解析,字符串解析方式:先按“;”分隔,分隔出的字符串再按“,”分隔,存入到vector
23、tringToVector(const?CString&?strData,?vector
24、ost區(qū)別 5.stack 和 queue 區(qū)別,分別舉一個使用場景 6.快排的思想是?為啥快排快?快排穩(wěn)定嗎? 7.當(dāng)多個線程訪問同一變量時,可能會產(chǎn)生什么問題? 8、深拷貝和淺拷貝的區(qū)別? 9、進程間通信有哪些方法? 10、常用的排序算法舉例?他們各自的優(yōu)缺點是? 11、常用的http請求方法有哪些,他們的區(qū)別是什么? 12、列舉三種你知道的設(shè)計模式,并簡述應(yīng)用場景。 13、求兩個字符串的最大重合長度,并輸出重合部分。 14、編寫代碼,使用快速排序法對數(shù)組內(nèi)元素進行排序。 15、實現(xiàn)一個線程池。 16、堆區(qū)和棧區(qū)的區(qū)別 17、靜態(tài)成員變量 18、一個進程中,我不
25、停的向其中push_back數(shù)據(jù)元素會發(fā)生什么? 19、如果我們要自己實現(xiàn)一個單向鏈表,那么我們該怎么實現(xiàn)? 20、說一下常用的進程間通信的方法。說一下共享內(nèi)存。 21、說一下線程間的同步方式。 22、編寫一個函數(shù),它去找出uint32中的每一個位為1的位。 23、說一下select、poll和epoll的區(qū)別 24、說一下strace和GDB如何聯(lián)合使用 25、說一下C++的四種類型轉(zhuǎn)換 26、說一下智能指針 27、STL模板庫用了哪些 28、std::vector的存儲機制 std::map的底層實現(xiàn) 29、冒泡排序和快速排序的時間復(fù)雜度 30、進程和線程的區(qū)別 31、客戶端和服務(wù)器之間通信的時候調(diào)用了哪些系統(tǒng)函數(shù) 32、說一下三次握手和四次揮手 33、如何使用shell在一個目錄下找到一個大于10k小于50k的文件 34、如何打印一個文本文件的倒數(shù)第二行 35、使用top命令出現(xiàn)的關(guān)鍵值都有些啥 36、如何處理端口占用的情況 37、用echo打印一個字符串的前十個字符 38、假如有兩個50億字節(jié)的字符串,如何找到它倆里面相同的字符串 38、ARM指令集和X86指令集的區(qū)別
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 市教育局冬季運動會安全工作預(yù)案
- 2024年秋季《思想道德與法治》大作業(yè)及答案3套試卷
- 2024年教師年度考核表個人工作總結(jié)(可編輯)
- 2024年xx村兩委涉案資金退還保證書
- 2024年憲法宣傳周活動總結(jié)+在機關(guān)“弘揚憲法精神推動發(fā)改工作高質(zhì)量發(fā)展”專題宣講報告會上的講話
- 2024年XX村合作社年報總結(jié)
- 2024-2025年秋季第一學(xué)期初中歷史上冊教研組工作總結(jié)
- 2024年小學(xué)高級教師年終工作總結(jié)匯報
- 2024-2025年秋季第一學(xué)期初中物理上冊教研組工作總結(jié)
- 2024年xx鎮(zhèn)交通年度總結(jié)
- 2024-2025年秋季第一學(xué)期小學(xué)語文教師工作總結(jié)
- 2024年XX村陳規(guī)陋習(xí)整治報告
- 2025年學(xué)校元旦迎新盛典活動策劃方案
- 2024年學(xué)校周邊安全隱患自查報告
- 2024年XX鎮(zhèn)農(nóng)村規(guī)劃管控述職報告