劍指offer部分題解(1)

2021-08-20 03:19:44 字數 1167 閱讀 2994

題目描述

輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。思路

注意點

class solution 

string printminnumber

(vector<

int> numbers)

sort

(str.

begin()

, str.

end(

), cmp)

; string ansstr;

for(

int i =

0; i < n; i++

) ansstr +

= str[i]

;return ansstr;}}

;

題目描述

統計乙個數字k在排序陣列中出現的次數。

思路o(n)演算法:直接遍歷即可。

o(logn)演算法:用二分求出與數字k相等的最左邊的下標和最右邊的下標。

注意點

class solution 

if(data[r]

== k)

return r;

else

return-1

;}intrightsearch

(int l,

int r,

int k, vector<

int> data)

if(data[l]

== k)

return l;

else

return-1

;}intgetnumberofk

(vector<

int> data ,

int k)

};

題目描述

輸入一顆二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。

思路將路徑用vector記錄,當滿足條件時,加入ans。

遞迴+回溯

/*

struct treenode

};*/

class solution

};

劍指offer個人題解1

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。其實這個題目是非常有規律的,所以才可以用複雜度更小的方法來實現。由於其每行自左向右遞增,每列自上而下遞增,所我...

劍指offer題解

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。思路 這題較好的思路有兩個,乙個是最容易想到的nlog,枚舉行,二分列。另一種就是從左下角逐步列舉,如果大於目標值就向上走,小於目標值...

劍指Offer題解索引

陣列中重複的數字 二維陣列中的查詢 構建乘積陣列 替換空格 字元流中第乙個不重複的字元 表示數值的字串 斐波那契數列 跳台階 跳台階 矩形覆蓋 從尾到頭列印鍊錶 刪除鍊錶中重複的結點 鍊錶中環的入口結點 把二叉樹列印成多行 按之字形順序列印二叉樹 對稱的二叉樹 二叉樹的下乙個結點 資料流中的中位數 ...