百度3道演算法題求解
第一題:
某個公司舉行一場羽毛球賽,有1001個人參加,現在為了評比出“最厲害的那個人”,進行淘汰賽,請問至少需要進行多少次比賽。
第二題
有100個燈泡,第一輪把所有燈泡都開啟,第二輪把奇數位的燈泡滅掉,第三輪每隔兩個燈泡,滅一個,開一個,依此類推。求100輪後還亮的燈泡。
第二題目說錯了: 重新在描述一遍,sorry:
一百個燈泡排成一排,第一輪將所有燈泡開啟;
第二輪每隔一個燈泡關掉一個。即排在偶數的燈泡被關掉,
第三輪每隔兩個燈泡,將開著的燈泡關掉,關掉的燈泡開啟。
依次類推,第n輪結束的時候,還有幾盞燈泡亮著。
第三題
有20個陣列,每個陣列裡面有500個陣列,降序排列,每個數字是32位的unit,求出這10000個數字中最大的500個。
一、
1.如果不考慮內部排名而僅尋找“最強的”那個人。即最底層有1001個節點的完全二叉樹的度為2的節點數
2.三個迴圈
3.5路歸併排序?
二、
第一個 不能用二叉數 只能用n2時間相關的演算法, 因為要選 最厲害的, 因為是比賽不是排序 所以會出現一種情況 就是就是石頭剪刀布的情況, 所以要兩兩 都對戰一場,看誰贏的局數多。
三、
#include <stdio.h>
#define PRINT {for (i = 0; i < 100; i++)printf("%d ", ar[i]);printf("\n\n");}
// 0 關著的
// 非0 開著的
int main(void)
{
int ar[100] = {0};
int i;
int times;
int n;
int t;
printf("n = ?: ");
scanf("%d", &n);
for (i = 0; i < 100; i++)
ar[i] = 1;
for (t = 1; t < (n % 100); t++)
{
for (i = 0; i < 100; i += (t + 1))
ar[i] = !ar[i];
}
for (i = 0, times = 0; i < 100; i++)
if (ar[i] != 0)
times++;
printf("%d", times);
return 0;
}
四、
1. 1000
2. 燈泡從 1 開始編號,所有編號為完全平方數(1,4,9,...,100)的燈泡最後會亮著。ps.這個是經典題了。
3. 昨天剛好看到類似的題目。以下 n=10000,m=500,有三個方法。
[1] sort. O(nlogn)
[2] 將第一陣列建立 min-heap,所有其他陣列成員依次插入到 min-heap,每次完成插入後,刪除當前最小值,即根元素。所有元素都篩過以後,min-heap 中的元素即為最大的 500 個。O(nlogm).
[3] 將 20 個陣列合併為 1 個,挨著連線起來即可,不必保證有序。在合併的陣列中隨機選取一個元素,然後將所有小於此元素的元素放在其左側,大於到右側。完成操作後,如果原來被選中的元素剛好處在右數第 500 的位置,那從它開始向右的元素即為所求。否則,如果右端元素數目大於 500,則對右端序列遞迴使用此方法;否則,如果左端序列數目大於 10000-500,則對左端序列遞迴使用此方法。複雜度 expected O(n).
[2] 和 [3] 都沒有用到原陣列有序的特性,我想應該還能改進。
相關文章
- 一道簡單的分配演算法題,求解演算法
- 一道hibernate面試題,求解?面試題
- 演算法問題基於蟻群演算法求解求解TSP問題(JAVA)演算法Java
- 一道sql面試題的求解方法SQL面試題
- 分治演算法-求解棋盤覆蓋問題演算法
- 一道演算法題演算法
- 利用遺傳學演算法求解工作分配問題演算法
- 遺傳演算法求解TSP問題(python版)演算法Python
- 【JavaScript】前端演算法題 40道題+解析JavaScript前端演算法
- 一道前端演算法題前端演算法
- 15道簡單演算法題演算法
- [經典演算法]海盜分金問題sql求解(貪心演算法)演算法SQL
- 華為雲天籌AI求解器:智慧世界是道迷人的數學題AI
- 一道演算法題的分析演算法
- 十道簡單演算法題演算法
- 10 道資料結構演算法題,不看答案你會幾道題資料結構演算法
- 蟻群演算法java實現以及TSP問題蟻群演算法求解演算法Java
- 前端學習演算法3:一道來自頭條的面試題前端演算法面試題
- 高等數學隨記 - 一道極限計算題的簡化求解
- 用 Httprunner3 做介面測試遇到了問題,求解~HTTP
- 程式設計題求解程式設計
- 基於免疫演算法的TSP問題求解matlab模擬演算法Matlab
- 「每日一道演算法題」Reverse Integer演算法
- 刷了80道演算法題以後演算法
- 演算法題系列3演算法
- 敢挑戰這3道 JavaScript 題嗎JavaScript
- 03 迴歸演算法 - 線性迴歸求解 θ(最小二乘求解)演算法
- 粒子群演算法求解物流配送路線問題(python)演算法Python
- DPLL 演算法(求解k-SAT問題)詳解(C++實現)演算法C++
- [2]十道演算法題【Java實現】演算法Java
- 一道趣味數學演算法問題演算法
- 一道位運算的演算法題演算法
- 使用 AI 解決一道演算法題AI演算法
- 回溯演算法求解橋本分數式演算法
- ch2_8_3求解迴文序列問題(遞迴實現)遞迴
- 文字主題模型之LDA(二) LDA求解之Gibbs取樣演算法模型LDA演算法
- 前端演算法題 | 這道題效率最高的演算法,你可能不知道?前端演算法
- c++求解獎券題目C++