阿里巴巴2014筆試演算法題彙總

2021-08-27 15:01:12 字數 856 閱讀 5545

1.兩棵二叉樹t1和t2,t1的節點數是百萬量級,t2的節點數一千以內,請給出判斷t2是否t1子樹的可行演算法。

分析:首先想到的是遞迴,但是t1的數量級太大,遞迴會導致棧溢位,於是以非遞迴實現。

bool issubtree(binarytreenode* proot1, binarytreenode* proot2)   

stackstk;

stk.push(proot1);

while (!stk.empty())

if (s->m_pleft != null) else

} if (s->m_pright != null) else

} }

if (find == true && first.empty())

} if (tmp->m_pleft != null)

if (tmp->m_pright != null)

} return false;

}

2. 從1到500的500個數,第一次刪除奇數字,第二次刪除剩下來的奇數字,以此類推,最後剩下的唯一一位數是:

a.500 b.256c.250d.128

分析:比如:1,2,刪除奇數字,那剩下的是2,

1,2,3,刪除奇數字,剩下的是2,1,

2,3,4,剩下的是4,

1,2,3,4,5,6,7,剩下的是4,

1,2,3,4,5,6,7,8和1,2,3,4,5,6,7,8,9,10,11,12,13,14,15剩下的是8,

這裡有什麼規律:就是當1~n,2^i2^8<500<2^9,所以剩下的就是2^8=256。

阿里巴巴2014筆試演算法題彙總

1.兩棵二叉樹t1和t2,t1的節點數是百萬量級,t2的節點數一千以內,請給出判斷t2是否t1子樹的可行演算法。分析 首先想到的是遞迴,但是t1的數量級太大,遞迴會導致棧溢位,於是以非遞迴實現。bool issubtree binarytreenode proot1,binarytreenode p...

Alibaba 阿里巴巴2014筆試題

前天筆試的阿里巴巴,有一道填空題是問如何只掃瞄一次陣列,求出其方差。考試的時候知道肯定可以求出來,而且要用迭代 即遞推 可惜當時由於時間緊張,推導的公式寫錯了。在此補上。公式使用latex寫的。所以只能截圖了。最後給出了c函式。題目二 不開闢變數,僅用3條語句交換兩個變數int a,int b 答案...

人人網2014筆試演算法題彙總

1.給出乙個有序陣列啊,長度為len,另外給出第三個數x,問是否能在陣列中找到兩個數,這兩個數之和等於第三個數x。我們首先看到第一句話,這個陣列是有序的,所以,我們可以定義兩個指標,乙個指向陣列的第乙個元素,另乙個指向應該指向的位置 這個需要看具體的實現和陣列給定的值 首先計算兩個位置的和是否等於給...