劍指Offer(面試題31 32)

2021-07-24 09:34:16 字數 950 閱讀 2527

面試題31:連續子陣列的最大和

題目:輸入乙個整型陣列,陣列裡有正數也有負數。陣列中乙個或連續的多個整數組成乙個子陣列。求所有子陣列的和的最大值。要求時間複雜度為o(n)。

bool g_invalidinput = false;

int findgreatestsumofsubarray(int *pdata,int nlength)

g_invalidinput = false;

int ncursum = 0;

int ngreatestsum = 0x80000000;

for(int i=0;iif(ncursum <= 0)

ncursum = pdata[i];

else

ncursum += pdata[i];

if(ncursum > ngreatestsum)

ngreatestsum = ncursum;

}return ngreatestsum;

}

面試題32:從1到n整數中1出現的個數

題目:輸入乙個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1的數字有1,10,11,12,1一共出現了5次。

不考慮時間效率的解法,靠它想拿offer有點難

累加1到n中每個整數1出現的次數。

int numberof1between1andn(unsigned

int n)

int numberof1(unsigned

int n)

return number;

}

在上述思路中,如果輸入數字n,那麼它的時間複雜度是o(n*logn)。當輸入n非常大的時候,需要大量的計算,運算效率不高。

劍指offer面試題7

面試題7 用兩個棧實現佇列 using namespace std template class cqueue 預備知識 佇列 佇列也是一種常見的資料結構 特點是先進先出 fifo 在stl中有stack和queue兩個容器 template class stack 成員函式 empty size ...

劍指offer面試題11

面試題1 數值的整數的次方 題目 實現函式double power double base,int exponent 求base的 exponent次方。不得使用庫函式,同時不需要考慮大數問題。思路 首先應該明確指數的可能取值 正整數,0,負整數 另外還需要考慮底數是0的情形。對於負整指數,我們可以...

劍指offer面試題15

面試題15 鍊錶中倒數第k個結點 題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾結點是倒數第乙個結點。例如乙個鍊錶有6個結點,從頭結點開始它們的值依次是1 2 3 4 5 6。這個鍊錶的倒數第3個結點是值為4的結點。預備知識 鍊錶結點的定義如下 ...