美團網2014筆試演算法題彙總

2021-08-27 15:00:09 字數 2863 閱讀 7277

1.鍊錶翻轉。給出乙個鍊錶和乙個數k,比如鍊錶1→2→3→4→5→6,k=2,則翻轉後2→1→4→3→6→5,若k=3,翻轉後3→2→1→6→5→4,若k=4,翻轉後4→3→2→1→5→6,用程式實現。

#include using namespace std;  

struct listnode

;

listnode* createlist(int val)

void insertnode(listnode **phead, int val)

(*phead)->m_pnext = pnode;

(*phead) = pnode;

}

void printlist(listnode *phead)

coutlistnode *ppre = null;

listnode *pcurrent = phead;

listnode *ppost = phead->m_pnext;

while (pcurrent->m_pnext != null)

pcurrent->m_pnext = ppre;

return pcurrent;

}

listnode* reverselist(listnode *phead, int k)

listnode *ppre = null;

listnode *pcurrent = phead;

listnode *ppost = phead->m_pnext;

listnode *pstart = null;

listnode *pend = null;

int n = 0;

pend = pcurrent;

pend->m_pnext = null;

while (ppost != null)

else

} pcurrent->m_pnext = ppre;

pstart = reverse(pcurrent);

return pstart;

}

int main()

else

} int k;

cout<<"請輸入k:"<>k;

head = reverselist(head, k);

printlist(head);

system("pause");

return 0;

}

2.乙個函式access(),呼叫頻率不能超過r次/sec,用程式實現乙個函式,當超過r次/sec時返回access false,不超過時返回success

#define false 0  

#define success 1

int getcurrentms()

bool count_access()

count++;

access();

if(count>=r)

return success;

}

3.

乙個m*n的矩陣,從左到右從上到下都是遞增的,給乙個數elem,求是否在矩陣中,給出思路和代 碼.

解: 思路:從矩陣的右上角開始判斷即可,每次可以消除一行或一列,詳見劍指offer一書.

4.利用兩個棧,模擬queue

#include #include using namespace std;  

template class queue

~queue()

void add(const t& t);

t remove();

private:

stacks1;

stacks2;

};

template void queue::add(const t& t)

template t queue::remove()

} if (s2.size() == 0)

t t = s2.top();

s2.pop();

return t;

} int main()

private int getsubcount(char s1,char s2, int i ,int j)

return count;

} }

6.1.將1-7個數字的全排列按照從小到大的順序放在乙個陣列,例如第0個元素是1234567,第1個是1234576,第5039個是7654321.請問第1646個元素是多少?

答案:3265417.

7.6位數字且第一位不為0的美團券密碼,在易個液晶數字裝置上顯示,倒過來看與原,ima一樣的概率是多少(如129621)(液晶顯示的數字1倒過來也算一樣哦)。

8.求單鏈表的倒數第k個元素。

struct node

;typedef node* list;

實現該函式

int findlastkthelement(list list, int k)。

9.現有實數陣列a和b,希望將a和b歸併為乙個有序陣列c,且c中無重複的數,請寫出演算法並給出演算法複雜度。

10.如果兩個正整數a和b,a的所有真因子之和等於b,b的所有真因子之和等於a,則稱a,b是amicable pair(說明:真因子包括1但不包括本身,比如14的真因子為1、2、7)。例如220和284就是amicable pair。

請寫一段**,列印出所有不超過1000萬的amicable pair。

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

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

暴風影音2014筆試演算法題彙總

1.自定義實現字串轉為整數的演算法,例如把 123456 轉成整數123456.輸入中可能存在符號,和數字 返回結果的有效標誌 enum status int gstatus valid int strtoint const char str while digit 0 digit 非法輸入 els...

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

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