劍指offer全套解答 劍指offer 36 45

2021-10-10 13:42:59 字數 3690 閱讀 7568

36.兩個鍊錶的第乙個公共節點

​ 輸入兩個鍊錶,找出它們的第乙個公共結點。(注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的)

public

class

solution

return p;

}}

37.數字在排序陣列**現的次數

​ 統計乙個數字在公升序陣列**現的次數。

public

class

solution

int l=

help

(array,k)

;int r=

help

(array,k+1)

;return r>l?r-l:0;

}private

inthelp

(int

arr,

int k)

else

}return l;

}}

38.二叉樹的深度

​ 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。

public

class

solution

return math.

max(

treedepth

(root.left)

,treedepth

(root.right))+

1;}}

39.平衡二叉樹

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。

public

class

solution

return

help

(root)!=-

1;}private

inthelp

(treenode root)

int left=

help

(root.left);if

(left==-1

)int right=

help

(root.right);if

(right==-1

)return math.

abs(left-right)

<=

1?math.

max(left,right)+1

:-1;

}}

40.陣列中只出現一次的數字

​ 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。

public

class

solution

int index=1;

while

((index&val)==0

) num1[0]

=0; num2[0]

=0;for

(int num:array)

else}}

}

41.和為s的連續正數序列

​ 小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100(至少包括兩個數)。沒多久,他就得到另一組連續正數和為100的序列:18,19,20,21,22。現在把問題交給你,你能不能也很快的找出所有和為s的連續正數序列? good luck!

public

class

solution

res.

add(

newarraylist

<

>

(list));

l++;}

else

if(tmpelse

}return res;

}}

42.和為s的兩個數字

​ 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。

public

class

solution

int l=0;

int r=len-1;

while

(lelse

if(tmp>sum)

else

}return res;

}}

43.左旋轉字串

​ 組合語言中有一種移位指令叫做迴圈左移(rol),現在有個簡單的任務,就是用字串模擬這個指令的運算結果。對於乙個給定的字串行s,請你把其迴圈左移k位後的序列輸出。例如,字串行s=」abcxyzdef」,要求輸出迴圈左移3位後的結果,即「xyzdefabc」。是不是很簡單?ok,搞定它!

public

class

solution

return str.

substring

(n,str.

length()

)+str.

substring(0

,n);

}}

44.翻轉單詞順序列

​ 牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,「student. a am i」。後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是「i am a student.」。cat對一一的翻轉這些單詞順序可不在行,你能幫助他麼?

public

class

solution

string[

] c=str.

split

("\\s+");

for(

int i=

0;i2;i++

) stringbuffer sb=

newstringbuffer()

;for

(int i=

0;ireturn sb.

tostring()

;}}

45.撲克牌順子

​ ll今天心情特別好,因為他去買了一副撲克牌,發現裡面居然有2個大王,2個小王(一副牌原本是54張_)…他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!!「紅心a,黑桃3,小王,大王,方片5」,「oh my god!」不是順子…ll不高興了,他想了想,決定大\小 王可以看成任何數字,並且a看作1,j為11,q為12,k為13。上面的5張牌就可以變成「1,2,3,4,5」(大小王分別看作2和4),「so lucky!」。ll決定去買體育彩票啦。 現在,要求你使用這幅牌模擬上面的過程,然後告訴我們ll的運氣如何, 如果牌能組成順子就輸出true,否則就輸出false。為了方便起見,你可以認為大小王是0。

public

class

solution

int count=0;

int p=0;

arrays.

sort

(numbers)

;for

(int i=

0;i)else

if(i}}

return count>=p;

}}

劍指offer全套解答 劍指offer 1 5

1.二維陣列中的查詢 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。public class solution int n array 0 length i...

劍指offer全套解答 劍指offer 46 55

46.孩子們的遊戲 圓圈中最後剩下的數 每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。hf作為牛客的資深元老,自然也準備了一些小遊戲。其中,有個遊戲是這樣的 首先,讓小朋友們圍成乙個大圈。然後,他隨機指定乙個數m,讓編號為0的小朋友開始報數。每次喊到m 1的那個小朋友要出...

劍指offer程式設計

二維陣列中的查詢 題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,...