Algorithm 一道算法題
這周的算法題是 Closest Prime Numbers in Range
,一開始的想法是說從前開后遍歷于样,然后判斷是否是質(zhì)數(shù)娄猫,如果是質(zhì)數(shù)就記錄下來,然后在下一個(gè)質(zhì)數(shù)出現(xiàn)的時(shí)候,判斷是否是最小的拟烫,如果是最小的就更新結(jié)果。
一開始我判斷質(zhì)數(shù)的方法就是從2開始到這個(gè)數(shù)的一半赠摇,假如都沒法整除超燃,那么就是質(zhì)數(shù)区拳,但是這樣的話,會(huì)超時(shí)意乓,所以我就想到了一個(gè)優(yōu)化的方法樱调,就是從2開始到這個(gè)數(shù)的平方根,假如都沒法整除届良,那么就是質(zhì)數(shù)笆凌,這樣的話,就不會(huì)超時(shí)了伙窃。
但是感覺用時(shí)還是比較長菩颖,所以我看了別的大佬的解法。一個(gè)優(yōu)化是說为障,假如gap小于3晦闰,那么就不用再判斷了,因?yàn)椴豢赡芨×索⒃埂V患恿艘恍写a呻右,但是效果很明顯。
還有一個(gè)可以做的優(yōu)化是鞋喇,把質(zhì)數(shù)的判斷放到一個(gè)數(shù)組里面声滥,這樣的話,就不用每次都判斷了侦香,但是這樣的話落塑,空間復(fù)雜度就會(huì)變高。
class Solution {
public int[] closestPrimes(int left, int right) {
int pre = 0, min = Integer.MAX_VALUE;
int[] res = new int[]{-1, -1};
for (int i = left; i <= right; i++) {
if (isPrime(i)) {
if (pre != 0 && min > i - pre) {
res = new int[]{pre, i};
min = i - pre;
if (min < 3) break;
}
pre = i;
}
}
return res;
}
private boolean isPrime(int value) {
if (value < 2) return false;
for (int i = 2; i < (int)Math.sqrt(value) + 1; i++) {
if (value % i == 0)
return false;
}
return true;
}
}
Review 一篇英文文章
因?yàn)樽罱ぷ魃婕暗角岸斯ぷ鞅容^多罐韩,然后前端build比較慢憾赁,所以就看了一篇關(guān)于build performance的文章 Keep webpack Fast: A Field Guide for Better Build Performance∩⒊常看完了但是還沒有具體實(shí)踐龙考,之后要做的第一步就是看看怎么來measure build過程中的各個(gè)過程的一個(gè)時(shí)間。
Technique/Tips 一個(gè)技術(shù)點(diǎn)
在你負(fù)責(zé)上線某個(gè)feature的過程中矾睦,你需要做的事情包括以下幾方面:
- 提前通知其他相關(guān)團(tuán)隊(duì)你要在這段時(shí)間進(jìn)行上線晦款,包括開發(fā)團(tuán)隊(duì),支持團(tuán)隊(duì)等
- 組織好相關(guān)的測(cè)試工作枚冗,邀請(qǐng)不同的人參加bug bash缓溅,在上線前盡量發(fā)現(xiàn)問題
- 提前準(zhǔn)備好相關(guān)的文檔,不管是測(cè)試相關(guān)的文檔還是上線文檔
- 上線過程中在各個(gè)環(huán)境進(jìn)行驗(yàn)證赁温,上線完成后再次進(jìn)行通知
- 上線之后需要檢測(cè)相關(guān)feature的一些狀態(tài)來進(jìn)行衡量
Share 一個(gè)觀點(diǎn)
假如想在工作中獲得更大的成就肛宋,不僅說需要關(guān)注于上級(jí)給你分配的任務(wù)州藕。也可以更多的去想想,你的上級(jí)或者你所開發(fā)的產(chǎn)品有什么痛點(diǎn)需要解決酝陈。然后在日常工作之外,去做一些相關(guān)的工作毁涉。比如關(guān)于performance沉帮,reliability,revenue這些贫堰。