有乙個整數陣列,請你根據快速排序的思路,找出陣列中第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,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數。思路 其實就是,原字串翻轉之後的字串跟原字串的最長公共子串行 那麼利用動態規劃的最長公共...