?作者:@平凡的人1
?專欄:《小菜鳥愛刷題》
?一句話:凡是過(guò)往,皆為序章
?說(shuō)明: 過(guò)去無(wú)可挽回, 未來(lái)可以改變
-
為了方便自己的學(xué)習(xí)以及基于好久沒更新博客的原因。特地寫了這一篇博客。??
-
本篇博客是一篇記錄學(xué)習(xí)篇,我將之歸納于刷題專欄。方便自己的復(fù)習(xí)以及分享一些自己的學(xué)習(xí)過(guò)程。??
-
如果你覺得有錯(cuò)誤的地方,一定要及時(shí)地告訴我哦,畢竟博主能力有限,請(qǐng)多多指教呀??
下面我們進(jìn)入今天的主題??
Leetcode簡(jiǎn)單題
258.各位相加
給定一個(gè)非負(fù)整數(shù) num,反復(fù)將各個(gè)位上的數(shù)字相加,直到結(jié)果為一位數(shù)。返回這個(gè)結(jié)果。
示例 1:
輸入: num = 38
輸出: 2
解釋: 各位相加的過(guò)程為:
38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2
由于 2 是一位數(shù),所以返回 2。
示例 1:輸入: num = 0
輸出: 0提示:
0 <= num <= 231 - 1
來(lái)源:力扣(LeetCode)
我們可以先想一想:如果一個(gè)數(shù)是小于10的話,那就直接返回即可。當(dāng)大于10時(shí)候:比如例子中的38,把各位求出來(lái)相加之后還是大于10的,我們還是要繼續(xù)重復(fù)求出各個(gè)位,知道相加是小于10的這個(gè)過(guò)程。
解題思路:基于此,我們可以通過(guò)兩層循環(huán):里面一層可以用來(lái)計(jì)算第一次的各位相加之和,外面一層在來(lái)計(jì)算所得和如果大于10的過(guò)程。知道算出最終的結(jié)果。下面實(shí)現(xiàn)代碼:
這里要注意的就是第一次算完之后sum要重置為0,在繼續(xù)算下去,下面進(jìn)行提交運(yùn)行:
263.丑數(shù)
丑數(shù) 就是只包含質(zhì)因數(shù) 2、3 和 5 的正整數(shù)。
給你一個(gè)整數(shù) n ,請(qǐng)你判斷 n 是否為 丑數(shù) 。如果是,返回 true ;否則,返回 false 。
示例 1:
輸入:n = 6
輸出:true
解釋:6 = 2 × 3
示例 2:輸入:n = 1
輸出:true
解釋:1 沒有質(zhì)因數(shù),因此它的全部質(zhì)因數(shù)是 {2, 3, 5} 的空集。習(xí)慣上將其視作第一個(gè)丑數(shù)。
示例 3:輸入:n = 14
輸出:false
解釋:14 不是丑數(shù),因?yàn)樗肆硗庖粋€(gè)質(zhì)因數(shù) 7 。來(lái)源:力扣(LeetCode)
直接去判斷這個(gè)數(shù)是否能夠整除質(zhì)因數(shù)2、3、5,能夠整除的話,繼續(xù)讓這個(gè)數(shù)除以對(duì)應(yīng)的質(zhì)因數(shù),知道最后,判斷是否能夠等于1,等于1的話就是丑數(shù),不等的話就不是丑數(shù)。比如例子中的6,能夠整除2,繼續(xù)除以2等于4,又能夠整除2,繼續(xù)除以2,又能夠整除2,最終得到結(jié)果1。下面實(shí)現(xiàn)并提交運(yùn)行代碼:
283.移動(dòng)0
給定一個(gè)數(shù)組 nums,編寫一個(gè)函數(shù)將所有 0 移動(dòng)到數(shù)組的末尾,同時(shí)保持非零元素的相對(duì)順序。
請(qǐng)注意 ,必須在不復(fù)制數(shù)組的情況下原地對(duì)數(shù)組進(jìn)行操作。
示例 1:
輸入: nums = [0,1,0,3,12]
輸出: [1,3,12,0,0]
示例 2:輸入: nums = [0]
輸出: [0]來(lái)源:力扣(LeetCode)
解題思路:第一次去遍歷數(shù)組中不等于0的數(shù),放在數(shù)組中,第二次去遍歷:從第一次遍歷完成的下標(biāo)開始,直接讓后面(小于數(shù)組的長(zhǎng)度)的數(shù)等于0即可完成題目的要求。下面實(shí)現(xiàn)并提交代碼:
不過(guò)這種做法感覺效率太低了一點(diǎn)?? 不過(guò)我就是這么菜
326.3的冪
給定一個(gè)整數(shù),寫一個(gè)函數(shù)來(lái)判斷它是否是 3 的冪次方。如果是,返回 true ;否則,返回 false 。
整數(shù) n 是 3 的冪次方需滿足:存在整數(shù) x 使得 n == 3x
示例 1:
輸入:n = 27
輸出:true
示例 2:輸入:n = 0
輸出:false
示例 3:輸入:n = 9
輸出:true
示例 4:輸入:n = 45
輸出:false來(lái)源:力扣(LeetCode)
感覺這種題真的有一種規(guī)律,就像上面263.丑數(shù)的思路一樣,如果能夠整除3的話,那就讓這個(gè)數(shù)繼續(xù)去除以3,最后再去判斷是否等于1即可。由此類推,4的冪也不難求解。下面實(shí)現(xiàn)代碼及提交運(yùn)行代碼:
367.有效的完全平方數(shù)
給定一個(gè) 正整數(shù) num ,編寫一個(gè)函數(shù),如果 num 是一個(gè)完全平方數(shù),則返回 true ,否則返回 false 。
進(jìn)階:不要 使用任何內(nèi)置的庫(kù)函數(shù),如 sqrt 。
示例 1:
輸入:num = 16
輸出:true
示例 2:輸入:num = 14
輸出:false來(lái)源:力扣(LeetCode)
字面意思,直接for循環(huán)走起來(lái)即可,同時(shí)要注意到變量的類型,防止溢出
下面進(jìn)行實(shí)現(xiàn)代碼,提交運(yùn)行:
374.猜數(shù)字大小
猜數(shù)字游戲的規(guī)則如下:
每輪游戲,我都會(huì)從 1 到 n 隨機(jī)選擇一個(gè)數(shù)字。 請(qǐng)你猜選出的是哪個(gè)數(shù)字。
如果你猜錯(cuò)了,我會(huì)告訴你,你猜測(cè)的數(shù)字比我選出的數(shù)字是大了還是小了。
你可以通過(guò)調(diào)用一個(gè)預(yù)先定義好的接口 int guess(int num) 來(lái)獲取猜測(cè)結(jié)果,返回值一共有 3 種可能的情況(-1,1 或 0):-1:我選出的數(shù)字比你猜的數(shù)字小 pick < num
1:我選出的數(shù)字比你猜的數(shù)字大 pick > num
0:我選出的數(shù)字和你猜的數(shù)字一樣。恭喜!你猜對(duì)了!pick == num
返回我選出的數(shù)字。示例 1:
輸入:n = 10, pick = 6
輸出:6
示例 2:輸入:n = 1, pick = 1
輸出:1
示例 3:輸入:n = 2, pick = 1
輸出:1
示例 4:輸入:n = 2, pick = 2
輸出:2來(lái)源:力扣(LeetCode)
剛開始一直看不懂題目在說(shuō)啥(好吧,沒認(rèn)真看題目)。
就是已經(jīng)提供了一個(gè)函數(shù)接口guess(int num)然后我們?nèi)ヅ袛啻笮?,這其實(shí)就是在找一個(gè)數(shù),我們可以用二分查找的思想來(lái)解決這個(gè)題目,不說(shuō)了,直接實(shí)現(xiàn)。下面實(shí)現(xiàn)代碼并提交運(yùn)行:
414.第三大的數(shù)
給你一個(gè)非空數(shù)組,返回此數(shù)組中 第三大的數(shù) 。如果不存在,則返回?cái)?shù)組中最大的數(shù)。
示例 1:
輸入:[3, 2, 1]
輸出:1
解釋:第三大的數(shù)是 1 。
示例 2:輸入:[1, 2]
輸出:2
解釋:第三大的數(shù)不存在, 所以返回最大的數(shù) 2 。
示例 3:輸入:[2, 2, 3, 1]
輸出:1
解釋:注意,要求返回第三大的數(shù),是指在所有不同數(shù)字中排第三大的數(shù)。
此例中存在兩個(gè)值為 2 的數(shù),它們都排第二。在所有不同數(shù)字中排第三大的數(shù)為 1 。來(lái)源:力扣(LeetCode)
==直接從大到小排序,然后輸出第三個(gè)數(shù)即可???==?
因?yàn)閿?shù)組中可能含有相同的數(shù)字,這就需要我們?nèi)ヌ幚硪幌铝耍号判蛲曛?,我們可以定義一個(gè)計(jì)算器,如果不相鄰的話,讓count++,知道count==3即可輸出:
提交運(yùn)行代碼:
509.斐波那契數(shù)
斐波那契數(shù) (通常用 F(n) 表示)形成的序列稱為 斐波那契數(shù)列 。該數(shù)列由 0 和 1 開始,后面的每一項(xiàng)數(shù)字都是前面兩項(xiàng)數(shù)字的和。也就是:
F(0) = 0,F(xiàn)(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1
給定 n ,請(qǐng)計(jì)算 F(n) 。來(lái)源:力扣(LeetCode)
無(wú)需多言,直接實(shí)現(xiàn):
520.檢測(cè)大寫字母
我們定義,在以下情況時(shí),單詞的大寫用法是正確的:
全部字母都是大寫,比如 “USA” 。
單詞中所有字母都不是大寫,比如 “l(fā)eetcode” 。
如果單詞不只含有一個(gè)字母,只有首字母大寫, 比如 “Google” 。
給你一個(gè)字符串 word 。如果大寫用法正確,返回 true ;否則,返回 false 。示例 1:
輸入:word = “USA”
輸出:true
示例 2:輸入:word = “FlaG”
輸出:false來(lái)源:力扣(LeetCode)
那就把三種情況羅列出來(lái)不就行了:
不過(guò)我們需要借助一個(gè)計(jì)算器count,if(全部大寫count== strlen(word) || 全部都不是大寫count == 0 || 只有一個(gè)大寫,且在首位置count == 1&& word>=‘A’&&word<=‘Z’)
實(shí)現(xiàn)代碼并提交運(yùn)行:
1295.統(tǒng)計(jì)位數(shù)為偶數(shù)的數(shù)字
給你一個(gè)整數(shù)數(shù)組 nums,請(qǐng)你返回其中位數(shù)為 偶數(shù) 的數(shù)字的個(gè)數(shù)。
示例 1:
輸入:nums = [12,345,2,6,7896]
輸出:2
解釋:
12 是 2 位數(shù)字(位數(shù)為偶數(shù))
345 是 3 位數(shù)字(位數(shù)為奇數(shù))
2 是 1 位數(shù)字(位數(shù)為奇數(shù))
6 是 1 位數(shù)字 位數(shù)為奇數(shù))
7896 是 4 位數(shù)字(位數(shù)為偶數(shù))
因此只有 12 和 7896 是位數(shù)為偶數(shù)的數(shù)字
示例 2:輸入:nums = [555,901,482,1771]
輸出:1
解釋:
只有 1771 是位數(shù)為偶數(shù)的數(shù)字。來(lái)源:力扣(LeetCode)
首先去實(shí)現(xiàn)一個(gè)函數(shù)判斷一個(gè)數(shù)的位數(shù)是否為偶數(shù),然后去遍歷整個(gè)數(shù)組,如果是偶數(shù)的話加起來(lái)就行了:
提交運(yùn)行:
1346.檢查整除及其兩倍數(shù)是否存在
給你一個(gè)整數(shù)數(shù)組 arr,請(qǐng)你檢查是否存在兩個(gè)整數(shù) N 和 M,滿足 N 是 M 的兩倍(即,N = 2 * M)。
更正式地,檢查是否存在兩個(gè)下標(biāo) i 和 j 滿足:
i != j
0 <= i, j < arr.length
arr[i] == 2 * arr[j]示例 1:
輸入:arr = [10,2,5,3]
輸出:true
解釋:N = 10 是 M = 5 的兩倍,即 10 = 2 * 5 。
示例 2:輸入:arr = [7,1,14,11]
輸出:true
解釋:N = 14 是 M = 7 的兩倍,即 14 = 2 * 7 。
示例 3:輸入:arr = [3,1,7,11]
輸出:false
解釋:在該情況下不存在 N 和 M 滿足 N = 2 * M 。來(lái)源:力扣(LeetCode)
作為一個(gè)菜鳥,我想到的是兩層for循環(huán)解決:
數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)選填題
選擇題
眾所周知,單鏈表并不能像順序表一樣能夠隨機(jī)存取,訪問(wèn)元素是需要去遍歷一遍的。
下標(biāo)從0到29,數(shù)組的大小就是30,(25+11)%30=6
棧貌似和遞歸的原理是一樣的,棧是后進(jìn)先出,遞歸何嘗不是
根據(jù)棧先進(jìn)后出的原理,我們可以知道,s1進(jìn)去之后就出來(lái)了,然后s2.s3.s4連續(xù)進(jìn)去又變成s6了,所以棧的容量至少來(lái)說(shuō)應(yīng)該是3
循環(huán)隊(duì)列中,我們來(lái)分析一波:
循環(huán)隊(duì)列在隊(duì)尾增加元素,在隊(duì)頭刪除元素。 刪除一個(gè)元素:front=(front+1)%6,結(jié)果為4。增加兩個(gè)元素,real=(real+2)%6, 結(jié)果為2
元素49會(huì)與38發(fā)生沖突,39在位置3,所以49要往后移動(dòng),在位置4
畫出分離鏈接法處理沖突時(shí)的散列表,在根據(jù)散列表計(jì)算即可
有中序和先序就可以構(gòu)造出一顆二叉樹,我們知道,在先序中可以找到根結(jié)點(diǎn),在中序中能夠以根節(jié)點(diǎn)分為左右子樹即可,重復(fù)下去,然后在根據(jù)二叉樹寫出后序遍歷即可
根據(jù)權(quán)值找最小的即可
設(shè)T是由n個(gè)結(jié)點(diǎn)構(gòu)成的二叉樹,其中,葉子結(jié)點(diǎn)個(gè)數(shù)為n0,次數(shù)為2的結(jié)點(diǎn)個(gè)數(shù)為n2,則有: n0=n2+1 所以結(jié)點(diǎn)個(gè)數(shù):葉子結(jié)點(diǎn)(5)+次數(shù)為1的結(jié)點(diǎn)(3)+次數(shù)為2的結(jié)點(diǎn)(4) = 12
對(duì)于n個(gè)頂點(diǎn)的簡(jiǎn)單無(wú)向圖,每個(gè)頂點(diǎn)最多與其余的n-1個(gè)結(jié)點(diǎn)鄰接,因此,最多有n(n-1)條邊
簡(jiǎn)單理解:廣度優(yōu)先用隊(duì)列,深度優(yōu)先用棧
6+5+4+3+2+1
構(gòu)造AVL進(jìn)行調(diào)整旋轉(zhuǎn)即可知道答案
填空題
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-400595.html
總結(jié)
好了,本次博客就是簡(jiǎn)單記錄一下一些我的學(xué)習(xí)過(guò)程,然后最近也挺忙的把,等到暑假博主會(huì)持續(xù)輸出的,如果對(duì)你有所幫助,覺得還可以的話,不要忘記了收藏哦,本次就先到這里結(jié)束了!??文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-400595.html
到了這里,關(guān)于【C語(yǔ)言&&數(shù)據(jù)結(jié)構(gòu)】簡(jiǎn)單題目的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!