劍指offer 66題 part1(1 6題)

2021-08-17 02:13:46 字數 2082 閱讀 6206

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

這個題其實很簡單

左上角是最小的,右下角是最大的,如果我們從最大或者最小的地方開始查詢不是很方便,想一想是不是,因為有時候選擇是不確定的,這樣就會導致後續走向有回頭現象

這個時候我們很容易想到用二分來做,但是依然不是很好二分,因為一行或者一列中可能二分不到想要的結果

而恰好在另外的一條對角線有二分的思想,大了可以選擇小的,小了可以選擇大的

class solution 

return false;

}};

這裡處理的是:在不申請新的記憶體的條件下完成轉換

這樣處理的話肯定就是倒過來處理,然後注意一下字串結尾標誌的處理

class solution 

int newlength=orilength+2*cnt+1;

if(newlength>length) return;

int p1=orilength+1;

int p2=newlength;

while(p1就是利用盞來暫時儲存結果,然後乙個個從棧裡面取出來即可

/***  struct listnode

*  };

*/class solution

vectorres;

while(!nodes.empty())

return res;

}};

給出先序和中序,求解二叉樹

給出先序就可以知道先序的第乙個節點一定是跟節點,而這個節點在中序中又可以分辨出左子樹和右子樹,以此類推就能得到一顆二叉樹

因此給出先序和後序的時候不能求解出相應的二叉樹

/**

* definition for binary tree

* struct treenode

* };

*/class solution

vector::iterator it = vin.begin();

while(it!=vin.end())

int len=it-vin.begin();///左子樹長度

vectorpre1(pre.begin()+1,pre.begin()+1+len);

vectorvin1(vin.begin(),vin.begin()+len);

vectorpre2(pre.begin()+1+len,pre.end());

vectorvin2(vin.begin()+1+len,vin.end());

root->left=reconstructbinarytree(pre1,vin1);

root->right=reconstructbinarytree(pre2,vin2);

return root;

}};

始終讓乙個棧來入佇列,乙個棧來出佇列

當出佇列的棧為空的時候就從入佇列的棧取資料到出佇列

class solution

int pop()

while(!stack1.empty())

int val=stack2.top();

stack2.pop();

return val;

}private:

stackstack1;

stackstack2;

};

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。 note:給出的所有元素都大於0,若陣列大小為0,請返回0

題解:因為是非遞減陣列的旋轉陣列,那麼就是兩個非遞減陣列,也是可以用二分的思想進行查詢的

特別注意乙個特殊的情況,在這個二分的過程中,要是首尾以及中間元素都相等的時候就要進行暴力掃瞄了

class solution 

return rotatearray[left];

}};

牛客網 劍指Offer(66題)

1 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。方法一 直接遍歷二維陣列 public class solution find 8,a public st...

劍指Offer66題的總結 目錄

劍指offer每日6題系列終於在今天全部完成了,從2017年12月27日到2018年2月27日,歷時兩個月的寫作,其中絕大部分的時間不是花在做題上,而是花在寫作上,這個系列不適合大神,大牛,這個系列是我專門為那些初識演算法,資料結構的同學和對基礎演算法,基本資料結構不熟練的同學而寫的。裡面所有的博文...

劍指offer 66道 跳台階

時間限制 1秒 空間限制 32768k 熱度指數 373877 題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 與斐波那契數列思想一樣,同樣使用迴圈代替遞迴,時間複雜度為o n coding utf 8 class sol...