從新開始努力吧

2021-10-01 12:57:55 字數 2771 閱讀 6443

給自己的練習程式乙個存放的位置,僅此而已,希望自己能夠有更大的進步吧,加油

在面試的時候總是覺得自己有很多的不足,特別是基礎知識上面臨著很大的困擾,所以決定將牛客網的劍指offer上的試題全部做一遍吧。從今天開始加油吧。

二維陣列的查詢

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

題目分析:這道題最簡單的做法肯定是直接兩層巢狀遍歷,但是這樣時間複雜度就略高一些,o(n^2)。所以考慮利用該陣列的特殊性質,及從左上角開始考慮,進行位置判斷,這樣的話整體的複雜度就會降低比較明顯,不超過兩倍的一維陣列長度。

//測試可用

class

solution

if(array[i]

[j]< target)

if(array[i]

[j]> target)

}return

false;}

};

替換空格
class

solution

l++;}

//計算位置

int p1 = l;

int p2 = l +

2* cnt;

//更新

while

(p1 >=0)

else}}

};

從尾到頭列印鍊錶

題目描述:輸入乙個鍊錶,按鍊錶從尾到頭的順序返回乙個arraylist。

題目分析:這個題有好幾種解法,最簡單的方法是利用乙個棧,全部壓入棧中後按順序返回乙個陣列,但是這個方法空間複雜度較大,需要額外乙個棧的空間。所以本題可以考慮先求出鍊錶的長度,之後從後向前往陣列中填位置即可。

class

solution

vector<

int>

array

(listlength)

; p = head;

int i = listlength -1;

while

(p !=

nullptr

)return array;}}

;

求乙個不存在的數

面試的時候遇到了這個題,很有趣,這裡我就記錄下來。

題目描述:乙個長度為n的陣列中,包含從1到n+1的數字大小,其中隨機缺少乙個數x,求x的值。

題目分析:這個題有好幾種方法,最簡單的做法是利用map容器,最終找到value=0的key值,時間複雜度為n,但是空間複雜度較大。

或者是利用排序,之後在遍歷一遍就很容易找到。但是快排的時間複雜度為nlogn.

這個題的最快做法就是直接將所有的資料全部相加,再求出1到n+1中所有資料的和,兩者只差就是缺少的那個數。這樣整個方法就只需要遍歷兩次,時間複雜度n,空間複雜度1。

求兩個個不存在的數

接上一題的內容擴充套件,乙個長度為n的陣列中,包含從1到n+1的數字大小,其中隨機缺少兩個數個數x和y,求x和y的值。

這個題當時我也沒有想出來,後來面試結束才想清楚具體的解法,非常的巧妙。當然首先要保證所有的資料量不能超過資料格式所限定的大小。

第一步與上題一樣,求出x+y的值。

第二部則把相加改為相乘,求出xy的值。

之後解一元二次方程就可求出具體的解。

重建二叉樹

題目描述:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。

題目分析:這是很自然的一種重建二叉樹的方法,屬於基本操作。核心就是利用遞迴操作。

/**

* definition for binary tree

* struct treenode

* };

*/class

solution

int k;

int leftnum;

for(

int i = vinlow; i <= vinhigh; i++)}

if(vinlow<=k-1)

if(k+

1<=vinhigh)

return newtree;

} treenode*

reconstructbinarytree

(vector<

int> pre,vector<

int> vin)

};

用兩個棧實現佇列

題目描述:用兩個棧來實現乙個佇列,完成佇列的push和pop操作。 佇列中的元素為int型別。

題目分析:棧和佇列的區別既是乙個先進後出,進出口共用乙個,乙個先進先出,乙個進口乙個出口。

class

solution

intpop()

else

int temp1=stack2.

top();

stack2.

pop();

return temp1;}}

private

: stack<

int> stack1;

stack<

int> stack2;

};

30歲從新開始

今天有點鬱悶,被乙個boss面試體無完膚,整個人都不好了。有點懷疑自己的定位是否正確。老單元遇到了瓶頸,自己選擇再出發,從管理切入要看機遇 從技術切人要補的好多。好在有空杯的心態以及家庭支援,讓我自己在這個時間段來重拾技術底層。從這次面試經歷開始說起吧 總共4個人面試,最後倒下以及自己面試準備以及面...

從新開始寫blog了

想了一圈,還是回到這裡。雖然不能完全讓我滿意,但是比較這裡能滿足我的最低的需要。既然要寫,就有些打算。首先是會盡量寫一些技術內容,同時又距離具體的 稍微遠一些。因為寫 不是寫blog。如果乙個blog裡面全是code,那我還不如直接去寫code了。也許寫一本全是code組成的書都有可能,但是這不是寫...

QT程式設計 從新開始(一)

布局 1 qt提供了qhboxlayout類 qvboxlayout 類及qgridlayout類等的基本布局管理,分別是水平排列布局 垂直排列布局和網格排列布局。它們之間的繼承關係如圖所示。2 布局中常用的方法有addwidget 和addlayout 1 addwidget 方法用於向布局中加入...