亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - 編程,算法的問題

瀏覽:125日期:2023-10-12 10:11:32

問題描述

前天面試了一個問題請使用js,python,java,c,c++之類的語言,在10秒內(nèi)計算出100億的數(shù)據(jù),并且(只能在3秒內(nèi))完成,偶數(shù)在奇數(shù)前格式如下1,2,3,4,5輸出結(jié)果是2,1,4,3,6,5,問題2:在1的代碼之上,要求不能使用for while關(guān)鍵字,從100億里面取所有的質(zhì)數(shù)(時間不能超過3秒)這個怎么搞?

問題解答

回答1:

第一個問題沒看懂,是說2個數(shù)字為一對,然后偶數(shù)在奇數(shù)前面?

第二個問題簡單啊,不能用循環(huán),那就用數(shù)組迭代唄。

回答2:

話說 php 的 foreach 算么(笑

我覺得面試官的意圖是讓你寫一個遞歸函數(shù)?嗯估計是。

回答3:

前天面試了一個問題請使用js,python,java,c,c++之類的語言,在10秒內(nèi)計算出100億的數(shù)據(jù),并且(只能在3秒內(nèi))完成,偶數(shù)在奇數(shù)前格式如下1,2,3,4,5輸出結(jié)果是2,1,4,3,6,5,問題2:在1的代碼之上,要求不能使用for while關(guān)鍵字,從100億里面取所有的質(zhì)數(shù)(時間不能超過3秒)這個怎么搞?

既然不能用 for while

那么遞歸性能不太夠。。。但是我還是用了一些。。 For Performance

可能有很巧妙的辦法

。。。 100億 的體量 應(yīng)該是有的。 我還沒發(fā)現(xiàn)。

代碼

100 億有點大啊 我先 10 萬了

var n = 1000 * 1000; var test = new Array(n).fill(n).map((e, idx) => idx);

這樣可以獲得到 10 萬長度的數(shù)組 自然數(shù)。

Next

偶數(shù)在前 奇數(shù)在后

觀察之后發(fā)現(xiàn),奇數(shù) + 1、 偶數(shù) - 1 就可以了

var isEven = n => n % 2 === 0; var res001 = test.map((e, idx) => { if (isEven(e)){return e - 1; } else {return e + 1; }});

完成第一個問題

ScreenShot One

javascript - 編程,算法的問題

Next

下一個問題是在上面的基礎(chǔ)上取得質(zhì)數(shù) 即從 zs 里取得所有質(zhì)數(shù)

查了一下關(guān)于質(zhì)數(shù)的問題,別人說 質(zhì)數(shù)分布在 6 的倍數(shù)的左邊或者右邊 那么我只要遍歷 每一個6的倍數(shù)的左邊和右邊 并判斷他們是不是質(zhì)數(shù)即可。

鏈接: 判斷一個數(shù)是否為質(zhì)數(shù)/素數(shù)——從普通判斷算法到高效判斷算法思路

// 剔除第一個負(fù)數(shù) var zs = res001.slice(1); var is6x = n => n % 6 === 0; var isPrime = n => { let temp = Math.sqrt(n); for(let i = 2; i <= temp; i++){ if(n % i === 0){ return false; } } return true; } var lasts = zs.filter(is6x).reduce((acc, cur) => { let left = cur - 1, right = cur + 1; if (isPrime(left)) acc.push(left); if (isPrime(right)) acc.push(right); return acc; }, []); console.log(lasts); ScreenShot Two

不知道對不對 ...

不過還需要把 小于 6 的質(zhì)數(shù) 1 2 3 5 單獨拼回去。 (這里沒拼)

javascript - 編程,算法的問題

性能

把上面寫的代碼黏起來

var isEven = n => n % 2 === 0; var is6x = n => n % 6 === 0; var isPrime = n => { let temp = Math.sqrt(n); for(let i = 2; i <= temp; i++)if(n %i== 0){ return false; } return true; } function timeTest(n){ var test = new Array(n).fill(n).map((e, idx) => idx); var res001 = test.map((e, idx) => {if (isEven(e)){ return e - 1; } else { return e + 1; } }); var zs = res001.slice(1); var lasts = zs.filter(is6x).reduce((acc, cur) => {let left = cur - 1, right = cur + 1; if (isPrime(left)) acc.push(left); if (isPrime(right)) acc.push(right); return acc; }, []); return lasts; }

test

var n = 1000 * 10000; console.time(’1000 萬’)timeTest(n); console.timeEnd(’1000 萬’);

1000 萬 結(jié)果如圖

javascript - 編程,算法的問題

花了 13.8 秒 不可能做到 10 + 3 秒內(nèi)完成 100億 的體量。

我的電腦是 i5-4210M 12G Chrome 58

JavaScript 做不到這樣的性能: 100億 個數(shù)字 13 秒內(nèi) ....

好幾個 G 的數(shù)據(jù) ......

按照上面的思路來做,即使是 C/C++ 估計也很難13秒跑完100億。

解決問題為主。

Links

判斷一個數(shù)是否為質(zhì)數(shù)/素數(shù)——從普通判斷算法到高效判斷算法思路

回答4:

首先感謝樓上的求質(zhì)數(shù)的算法,我貼下我的結(jié)果和代碼(只有1000萬,一億瀏覽器直接炸掉了,而且求質(zhì)數(shù)那里不能用遞歸(我測試的結(jié)果),不然也得炸,只能迭代)。

瀏覽器里面的結(jié)果:javascript - 編程,算法的問題

node里面的結(jié)果:javascript - 編程,算法的問題

var arr = [];console.time('1000萬');for( var i = 1; i <= 10000000; i++ ){ arr.push(i);}for( var j = 0, len = arr.length;j < len; j+=2 ){ arr[j]++; arr[j+1]--;}function isPrime(num,sqrt){ if(num == 1) return false; if(num == 2 || num == 3 ) return true; if(num % 6 != 1 && num % 6 != 5) return false; var tmp = sqrt(num); for(var i= 5;i<=tmp; i+=6 ) if(num % i == 0 || num % ( i + 2) == 0 ) return false ; return true; };function getPrime(sourceArray,array,isPrime,sqrt){ sourceArray.map(function(num,idx){if(isPrime(num,sqrt)){ array.push(num);} }); return array;};var result = getPrime(arr,[],isPrime,Math.sqrt);console.timeEnd('1000萬');

標(biāo)簽: JavaScript
主站蜘蛛池模板: 久久亚洲一区二区 | 亚洲综合色网站 | 亚洲天天综合色制服丝袜在线 | 国产综合久久久久久 | 亚洲欧美一级久久精品 | 香蕉视频在线观看免费 | 黄色在线视频免费看 | 在线日韩麻豆一区 | 久热精品免费视频 | 久久精品国产亚洲麻豆小说 | 国产精品成人亚洲 | 日本久久久久中文字幕 | 久久99国产精品久久99软件 | 啪啪网址免费网址 | 美国一级做a爰片性色毛片 美国人与性xxxxxxx | 日韩大片免费观看视频播放 | 在线免费你懂的 | 黄色在线观看国产 | 免费观看a毛片一区二区不卡 | 自拍视频在线观看视频精品 | 国产一区二区三区免费播放 | 香蕉视频网站在线 | 欧美一级爱操视频 | 日韩一区二区精品久久高清 | 亚洲精品一区二区三区在 | 黄色国产一级片 | 午夜激情在线 | 亚洲欧美视频网站 | 三区在线观看 | 日韩一区二区三区在线观看 | 午夜a一级毛片一.成 | 丁香婷婷久久 | 香蕉视频禁止18 | 午夜男男xx00视频免费 | 国产情趣酒店鸳鸯浴在线观看 | 四色婷婷婷婷色婷婷开心网 | 福利一二区 | 在线观看国产视频 | 亚洲精品日本高清中文字幕 | 国精产品一区一区三区 | 国产网红在线视频 |