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