劍指offer程式設計

2021-09-11 06:09:49 字數 3052 閱讀 9948

1.二維陣列查詢

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

思路:二維陣列有序

class solution 

else if(array[i][j]補充:vector 陣列

1.定義和初始化陣列

int a = ;

int b[3] = ;

2.向量(c++中陣列和vector

)c++中vector為類模板。vector是型別相同的物件的容器,vector的大小可以變化,可以向陣列中增加元素。

vectorarray; //array 型別是t :int float double

vectorv1; //v1為空,執行預設初始化

vectorv2(v1); //v2中包含v1所有元素的副本

vectorv2=v1; //等價於v2(v1)

vectorv3(n,val); //v3中包含n個重複元素,每個元素的值都是val

vectorv4(n); //v4包含n個重複執行了值初始化的物件

vectorv5; //包含初始化元素個數,每個元素被對應的賦予相應的值

vectorv5=; //等價v5

vectorv1,只用預設初始化時,不能通過下標進行新增元素。

vectorv1(n),可以通過下標進行新增元素。   v1[0] = 0;

向vector向量中新增物件:

vectorv;

for(int i=0;i < 3;++i)

size指vector容器當前擁有的元素個數

一次性指定外層vector 大小

v.resize(n, vector(m));
#include#includeusing namespace std;

class solution

else if(arr[i][j]v1(4);

v1[0] = 0;

v1[1] = 1;

v1[2] = 2;

v1[3] = 3;

for (int i = 0; i < 4; i++)

vector>array(4, vector(4)); //定義乙個4*4的二維陣列

cout << array.size()<(3) 包含3個元素的向量

cout << array[0].size() << endl;//向量的列數

int n = array.size();

int m = array[0].size();

//給陣列元素賦值

array[0][0] = 1;

array[0][1] = 2;

array[0][2] = 3;

array[0][3] = 4;

array[1][0] = 2;

array[1][1] = 3;

array[1][2] = 6;

array[1][3] = 7;

array[2][0] = 3;

array[2][1] = 4;

array[2][2] = 7;

array[2][3] = 8;

array[3][0] = 5;

array[3][1] = 6;

array[3][2] = 9;

array[3][3] = 10;

for (int i = 0; i < n; i++) }

solution s;

cout << s.find(9, array);

return 0;

}

2.思路:

a,從前往後,字元不斷後移

b,從後往前,需要知道空間大小

class solution 

else

}//cout << str << endl;

}};

測試:特別注意空格的位置,在開頭,中間 ,結尾 三種情況都需要測試

#includeusing namespace std;

void respace(char *str, int length)

else

} cout << str << endl;

}void main()

3.兩個棧實現佇列

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

解釋:含義:1. 棧是一種線性儲存結構;

1.1特點:a.先進後出(filo);b.只能在棧頂操作(插入和刪除);

1.2    a.棧頂和棧底:棧頂允許元素進行插入和刪除操作;另一端叫棧底;

b.壓棧:元素的插入;(入棧)

c.出棧:元素的刪除。

1.3 操作

#includestacks;

s.empty(); //如果棧為空則返回true, 否則返回false;

a.入棧push 

s.push();
b.出棧pop

s.pop();
c.棧的大小

s.size();
d.棧底元素

s.top();
#include#includeusing namespace std;

int main()

cout << "size is " << mystack.size() << endl;

while (!mystack.empty())

cout <<"結束!!!" <2.佇列

劍指offer程式設計

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

劍指offer 程式設計題

輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。注意 這兩個序列的長度是相等的 ...

javascript劍指offer程式設計練習 4

題目描述 從上往下列印出二叉樹的每個節點,同層節點從左至右列印。function treenode x function printfromtoptobottom root let queue queue.push root let result while queue.length if node...