23<劍指>以前提交未通過的5道題

19.數(shù)組中只出現(xiàn)一次的數(shù)字

題目描述:一個(gè)整型數(shù)組里除了兩個(gè)數(shù)字之外,其他的數(shù)字都出現(xiàn)了偶數(shù)次。請(qǐng)寫程序找出這兩個(gè)只出現(xiàn)一次的數(shù)字。

思路:

暴力解法:將數(shù)組排序,如果這個(gè)數(shù)和它前后兩個(gè)數(shù)都不等,就是要找的數(shù),注意第一個(gè)和最后一個(gè)

暴力解法:用ArrayList存遍歷數(shù)組的值,若當(dāng)前遍歷的值,在ArrayList中都有了,在ArrayList中刪除該值,最后ArrayList中的兩個(gè)數(shù)就是只出現(xiàn)一次的數(shù)字

20.統(tǒng)計(jì)一個(gè)數(shù)字在排序數(shù)組中出現(xiàn)的次數(shù)

題目描述:統(tǒng)計(jì)一個(gè)數(shù)字在排序數(shù)組中出現(xiàn)的次數(shù)

暴力解法:從頭遍歷數(shù)組,比較數(shù)字出現(xiàn)的次數(shù)

因?yàn)閿?shù)組有序,從找到第一個(gè)數(shù)字開始,直到這個(gè)數(shù)字結(jié)束的比較次數(shù)才是有意思的,所以先用二分查找法找到數(shù)字第一次出現(xiàn)位置和最后一次出現(xiàn)的位置,最后做差

感悟:總想暴力解決算法

21.兩個(gè)鏈表的第一個(gè)公共結(jié)點(diǎn)

題目描述:輸入兩個(gè)鏈表,找出它們的第一個(gè)公共結(jié)點(diǎn)

思路:比較兩個(gè)鏈表的長(zhǎng)度,讓長(zhǎng)鏈表移動(dòng)到兩鏈表長(zhǎng)度差個(gè)元素的位置,然后在一起移動(dòng)指針,相遇的第一個(gè)節(jié)點(diǎn)就是返回結(jié)果

感悟:思路清晰,實(shí)現(xiàn)不難,就是要細(xì)心,之前把計(jì)算第二個(gè)鏈表長(zhǎng)度的語句寫成

while(temp2!=null){

? ? ? ? ? ? len2++;

? ? ? ? ? ? temp2=temp1.next;

? ? ? ? }

測(cè)試不通過,找了好久。。。

22.和為S的連續(xù)正數(shù)序列

題目描述:小明很喜歡數(shù)學(xué),有一天他在做數(shù)學(xué)作業(yè)時(shí),要求計(jì)算出9~16的和,他馬上就寫出了正確答案是100。但是他并不滿足于此,他在想究竟有多少種連續(xù)的正數(shù)序列的和為100(至少包括兩個(gè)數(shù))。沒多久,他就得到另一組連續(xù)正數(shù)和為100的序列:18,19,20,21,22?,F(xiàn)在把問題交給你,你能不能也很快的找出所有和為S的連續(xù)正數(shù)序列? Good Luck!

思路:設(shè)置兩個(gè)指針,一個(gè)指向當(dāng)前序列的最小的數(shù),一個(gè)指向當(dāng)前序列最大的數(shù)。

1)設(shè)置兩個(gè)指針,一個(gè)為small指向當(dāng)前正數(shù)序列中最小的數(shù),一個(gè)為big指向當(dāng)前正數(shù)序列中最大的數(shù);因?yàn)橹辽侔▋蓚€(gè)數(shù),所以small一定比和S的一半要小,查找的邊界就是small<(1+s)/2

2)若是當(dāng)前的正數(shù)序列之和大于S,縮小序列范圍,和中減掉small,讓small指針不停向后走,直到等于S停止;

3)若是當(dāng)前的正數(shù)序列之和小于S,擴(kuò)大序列范圍,和中加上big,讓big指針不停向后走,直到和為S停止;

23.數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字

題目描述:數(shù)組中有一個(gè)數(shù)字出現(xiàn)的次數(shù)超過數(shù)組長(zhǎng)度的一半,請(qǐng)找出這個(gè)數(shù)字。例如輸入一個(gè)長(zhǎng)度為9的數(shù)組{1,2,3,2,2,2,5,4,2}。由于數(shù)字2在數(shù)組中出現(xiàn)了5次,超過數(shù)組長(zhǎng)度的一半,因此輸出2。如果不存在則輸出0。

思路:

暴力解決:將數(shù)組排序,位于中間位置的數(shù)字就是超過數(shù)組長(zhǎng)度一半的那個(gè)數(shù)。

思路二(有問題):要找的數(shù)字出現(xiàn)的次數(shù)超過數(shù)組長(zhǎng)度的一半,也就是說它出現(xiàn)的次數(shù)比其他所有數(shù)字出現(xiàn)的次數(shù)的和還要多。當(dāng)遍歷到下一個(gè)數(shù)字的時(shí)候,如果下一個(gè)數(shù)字和當(dāng)前保存的數(shù)字相同,則次數(shù)加 1;如果和當(dāng)前保存的數(shù)字不同,則次數(shù)減 1;當(dāng)次數(shù)減到 0 的時(shí)候,將保存的數(shù)字改為當(dāng)前遍歷所處的位置,并將次數(shù)更改為 1。

思路三:HashMapmap<Integer,Integer>map = new HashMap<Integer,Integer>()用map,一個(gè)存數(shù)字,一個(gè)存次數(shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文是我自己在秋招復(fù)習(xí)時(shí)的讀書筆記,整理的知識(shí)點(diǎn),也是為了防止忘記,尊重勞動(dòng)成果,轉(zhuǎn)載注明出處哦!如果你也喜歡,那...
    波波波先森閱讀 4,365評(píng)論 0 23
  • 1. 找出數(shù)組中重復(fù)的數(shù)字 題目:在一個(gè)長(zhǎng)度為n的數(shù)組里的所有數(shù)字都在0到n-1的范圍內(nèi)。數(shù)組中某些數(shù)字是重復(fù)的,...
    BookThief閱讀 2,016評(píng)論 0 2
  • 說明: 本文中出現(xiàn)的所有算法題皆來自牛客網(wǎng)-劍指Offer在線編程題,在此只是作為轉(zhuǎn)載和記錄,用于本人學(xué)習(xí)使用,不...
    秋意思寒閱讀 1,219評(píng)論 1 1
  • -楔子- 聽著聽著 雨點(diǎn)碎了 秋風(fēng)也醉了 吹著吹著 楓葉紅了 蕭瑟也濃了 等著等著 初雪來了 寒冬也慌了 看著看著...
    iyunyi閱讀 191評(píng)論 0 0
  • 00:20分,我寫下這篇文章,我想說說我的爸爸,可是腦子里關(guān)于爸爸的印象卻很模糊……很奇怪,明明去年在老家過了個(gè)寒...
    九龍飛天閱讀 516評(píng)論 0 2

友情鏈接更多精彩內(nèi)容