劍指Offer(面試題49 50)

2021-07-24 09:55:22 字數 1085 閱讀 3518

面試題49:把字串轉換成整數

enum status ;

int g_nstatus = kvalid;

int strtoint(const char* str)

if(*str != '\0')

}return (int)num;

}long

long strtointcore(const char* digit,bool minus)

digit ++;

}else

}if(*digit == '\0')

return num;

}

在上面的**中,把空字串「 」和只有乙個正號或者負號的情況都考慮到了。同時正整數的最大值0x7fff ffff,最小的負整數是0x8000 0000,因此我們需要分兩種情況來分別判斷整數是否發生上溢位或者下溢位。

面試題50:書中兩個結點的最低公共祖先

bool getnodepath(treenode* proot,treenode* pnode,list

&path)

if(!found)

path.pop_back();

return found;

}treenode* getlastcommonnode

( const

list

& path1,

const

list

& path2

) return plast;

}treenode* getlastcommonparent(treenode* proot,treenode* pnode1,treenode* pnode2)

**中getnodepath用來得到從根結點proot開始到達結點pnode的路徑,這條路徑儲存在path中。函式getcommonnode用來得到兩個路徑path1和path2的最後乙個公共結點。函式getlastcommonpath得到path1和path2的最後乙個公共結點,即我們要找的最低公共祖先。

參考資料《劍指offer》

劍指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的結點。預備知識 鍊錶結點的定義如下 ...