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。我們首先看到第一句話,這個陣列是有序的,所以,我們可以定義兩個指標,乙個指向陣列的第乙個元素,另乙個指向應該指向的位置 這個需要看具體的實現和陣列給定的值 首先計算兩個位置的和是否等於給...