題目一(陣列中查詢)
在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
class solution
}else
}else
return
false;
}return
false;
}};
class
solution
int len =originallength+2*countofblanks;
if(len+1>length)
return ;
char*pstr1=str+originallength;//複製結束符『\0』
char*pstr2=str+len;
while(pstr1if(*pstr1==' ')
else
--pstr1;}}
};
題目三(列印鍊錶)
輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。
/**
* struct listnode
* };
*/class solution
int len=arr.size();
for(int i=0;ireturn result;
}};
題目四(重建二叉樹)
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。
/**
* definition for binary tree
* struct treenode
* };
*/class solution
}//對於中序遍歷,根節點左邊的節點位於二叉樹的左邊,根節點右邊的節點位於二叉樹的右邊
//利用上述這點,對二叉樹節點進行歸併
for(int i=0;i1]);//前序第乙個為根節點
}for(int i=gen+1;i//和shell排序的思想類似,取出前序和中序遍歷根節點左邊和右邊的子樹
//遞迴,再對其進行上述所有步驟,即再區分子樹的左、右子子數,直到葉節點
head->left=reconstructbinarytree(left_pre,left_in);
head->right=reconstructbinarytree(right_pre,right_in);
return head;
}};
題目五(用兩個棧實現佇列)
用兩個棧來實現乙個佇列,完成佇列的push和pop操作。 佇列中的元素為int型別。
class solution
int pop()
stack2[i] = -1;
return stack1[i];
}private:
vector
stack1;//存數
vector
stack2;//位址
};
題目六(旋轉陣列的最小數字)
把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。 例如陣列為的乙個旋轉,該陣列的最小值為1。 note:給出的所有元素都大於0,若陣列大小為0,請返回0。
#include
#include
#include
#include
#include
using
namespace
std;
class solution //if
int left = 0,right = size - 1;
int mid = 0;
// rotatearray[left] >= rotatearray[right] 確保旋轉
while(rotatearray[left] >= rotatearray[right])//if
mid = left + (right - left) / 2;
// rotatearray[left] rotatearray[right] rotatearray[mid]三者相等
// 無法確定中間元素是屬於前面還是後面的遞增子陣列
// 只能順序查詢
if(rotatearray[left] == rotatearray[right] && rotatearray[left] == rotatearray[mid])//if
// 中間元素位於前面的遞增子陣列
// 此時最小元素位於中間元素的後面
if(rotatearray[mid] >= rotatearray[left])//if
// 中間元素位於後面的遞增子陣列
// 此時最小元素位於中間元素的前面
else//else
}//while
return rotatearray[mid];
}private:
// 順序尋找最小值
int minorder(vector
&num,int left,int right)//if
}//for
return result;
}};int main();
//vectornum = ;
vector
num = ;
int result = s.minnumberinrotatearray(num);
// 輸出
cout
0;}
題目七(斐波那契數列)
大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項。
n<=39
class solution
if(n == 1)
int a = 0,b = 1;
int m = 0;
int i;
for(i = 2;i <= n;i++)
return m;
}};
題目八(跳台階)
乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。
class solution
return f;
}};
題目九(**跳台階)
乙隻青蛙一次可以跳上1級台階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法。
class solution
};
題目十(矩形覆蓋)
我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋乙個2*n的大矩形,總共有多少種方法?
class solution
int f1 = 1;
int f2 = 2;
int f3;
for (int i = 3; i <= number; i++)
return f3;
}};
C語言面試演算法題(二)
1.寫乙個函式,它的原形是int continumax char outputstr,char intputstr 功能 在字串中找出連續最長的數字串,並把這個串的長度返回,並把這個最長數字串付給其中乙個函式引數outputstr所指記憶體。例如 abcd12345ed125ss123456789 ...
面試演算法題
前幾天,一好友去筆試,有一題 現在有1000個蘋果,和10個箱子,如何把這1000個蘋果裝在這10個箱子裡,才能使不管任何數量 1 1000 的蘋果,都能一次給出?當時,我們都想,出題這人。今天,在想移位的時候,突然想到了,這絕對是二進位制數的變種。分析 1000個蘋果,最接近1024,轉化為2進製...
面試演算法題
1 直方圖矩形最大值 class solution s.push i return res 2 第n個醜數 class solution return res.back 3 lru cache 最近最少使用頁面置換快取器 class lrucache int get int key void set...