網易2016實習生程式設計題

2021-07-22 09:04:53 字數 1285 閱讀 5746

有乙個整數陣列,請你根據快速排序的思路,找出陣列中第k大的數。

給定乙個整數陣列a,同時給定它的大小n和要找的k(k在1到n之間),請返回第k大的數,保證答案存在。

測試樣例:

[1,3,5,2,2],5,3
返回:2

主體思路就是利用快速排序每次能將比某個哨兵小的數放在左側,大的數放在右側,**如下:

class finder 

int quickfind(vector& a, int left, int right, int k)

a[i] = mark;

//哨兵右側比他大的數字個數

int big_num = right - i;

//如果哨兵剛好是第k大的數

if (k - big_num - 1 == 0)

return mark;

else if (k - big_num - 1 > 0) else

}};

小明陪小紅去看鑽石,他們從一堆鑽石中隨機抽取兩顆並比較她們的重量。這些鑽石的重量各不相同。在他們們比較了一段時間後,它們看中了兩顆鑽石g1和g2。現在請你根據之前比較的資訊判斷這兩顆鑽石的哪顆更重。

給定兩顆鑽石的編號g1,g2,編號從1開始,同時給定關係陣列vector,其中元素為一些二元組,第乙個元素為一次比較中較重的鑽石的編號,第二個元素為較輕的鑽石的編號。最後給定之前的比較次數n。請返回這兩顆鑽石的關係,若g1更重返回1,g2更重返回-1,無法判斷返回0。輸入資料保證合法,不會有矛盾情況出現。

測試樣例:

2,3,[[1,2],[2,4],[1,3],[4,3]],4
返回: 1
int cmp(int g1, int g2, vector> records, int n) 

//構造有向圖

int map[maxnum+1][maxnum+1];

for(int i=1; i<=maxnum; i++)

}for(int i=0; iclass cmp

}inorder(root->right, v, small, big);

}public:

int getdis(treenode* root)

p = root;

while (true)

int i,j;

for (i=0,j=0;jreturn (int)v1.size()-1+(int)v2.size()-1-2*i;

}};

網易2017實習生程式設計題 消除重複元素

小易有乙個長度為n序列,小易想移除掉裡面的重複元素,但是小易想是對於每種元素保留最後出現的那個。小易遇到了困難,希望你來幫助他。輸入描述 輸入包括兩行 第一行為序列長度n 1 n 50 第二行為n個數sequence i 1 sequence i 1000 以空格分隔 輸出描述 輸出消除重複元素之後...

矩陣快速冪 網易2017實習生程式設計題 魔力手環

描述 小易擁有乙個擁有魔力的手環上面有n個數字 構成乙個環 當這個魔力手環每次使用魔力的時候就會發生一種奇特的變化 每個數字會變成自己跟後面乙個數字的和 最後乙個數字的後面乙個數字是第乙個 一旦某個位置的數字大於等於100就馬上對100取模 比如某個位置變為103,就會自動變為3 現在給出這個魔力手...

騰訊2017暑期實習生程式設計題

刷題 pragma warning disable 4996 遮蔽警告 構造回文 題目描述 給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數。思路 其實就是,原字串翻轉之後的字串跟原字串的最長公共子串行 那麼利用動態規劃的最長公共...