Algorithm
本周的算法題為 3151. 特殊數(shù)組 I
如果數(shù)組的每一對相鄰元素都是兩個奇偶性不同的數(shù)字孔厉,則該數(shù)組被認為是一個 特殊數(shù)組 。
Aging 有一個整數(shù)數(shù)組 nums
末早。如果 nums
是一個 特殊數(shù)組 烟馅,返回 true
说庭,否則返回 false
然磷。
示例 1
輸入:nums = [2,1,4]
輸出:true
解釋:
只有兩對相鄰元素: (2,1) 和 (1,4),它們都包含了奇偶性不同的數(shù)字刊驴,因此答案為 true姿搜。
實現(xiàn)代碼如下:
const isArraySpecial = function (nums) {
for (let i = 0; i < nums.length; i++) {
if (i !== nums.length - 1 && nums[i] % 2 === nums[i + 1] % 2) {
return false
}
}
return true
};
解題思路:
一開始想到的方案是:
- 如果nums[0] 為偶數(shù)時寡润,只要遍歷偶數(shù)索引,其值如果出現(xiàn)奇數(shù)舅柜,則返回false
- 如果nums[0] 為奇數(shù)時梭纹,只要遍歷偶數(shù)索引,其值如果出現(xiàn)偶數(shù)致份,則返回false
- 否則变抽,返回true
但是,出現(xiàn)相鄰為奇數(shù)或偶數(shù)時氮块,是不滿足條件的绍载,因為兩個條件分開判斷的,所以滔蝉,還是把問題想復(fù)雜化了击儡,其實處理起來很簡單,只需要判斷相鄰的兩個數(shù)蝠引,只要出現(xiàn)一次奇偶性相同阳谍,則為false,否則為true螃概。
但這里矫夯,也引申出了一個問題,檢查數(shù)組邊界和和不檢查數(shù)組邊界谅年,哪個效率更高一點茧痒?
// 檢查數(shù)組邊界
if (i !== nums.length - 1 && nums[i] % 2 === nums[i + 1] % 2) {
return false
}
// 不檢查數(shù)組邊界
if (nums[i] % 2 === nums[i + 1] % 2) {
return false
}
一般來說,前者因為有一個比較的操作融蹂,所以旺订,會影響到實際代碼執(zhí)行效率,但是超燃,避免了潛在的數(shù)組越界錯誤区拳;后者,沒有這個比較操作意乓,但是會有潛在數(shù)據(jù)越界錯誤樱调。從健壯性和避免潛在錯誤的角度考慮,第一個方式是更推薦的寫法届良。
Review
Panama evacuates islanders due to rising sea levels - Breaking News English Lesson
上升的海平面導(dǎo)致巴拿馬撤離了其中一個島嶼的居民笆凌。位于巴拿馬加勒比海岸的小島加爾迪·蘇格杜布的居民正在被重新安置到內(nèi)陸。然而士葫,一名巴拿馬政府官員表示乞而,一些人拒絕撤離他們的祖居。他們將一直留到最后一刻慢显。巴拿馬政府表示爪模,加爾迪·蘇格杜布是即將發(fā)生的事情的一個跡象欠啤,因為更多的低洼島嶼正面臨被海水吞沒的威脅。巴拿馬環(huán)境部門最近的一項研究估計屋灌,該國將失去2.01%的沿海領(lǐng)土洁段。該研究還指出,將有大約38,000人需要搬遷共郭,成本約為12億美元山孔。
加爾迪·蘇格杜布一直是世代居住的古納族人的家園擦盾。這個擁擠的島嶼只有366米長和137米寬圾叼,卻曾經(jīng)是將近300個家庭的家園榨惠。他們依靠捕魚和旅游業(yè)謀生。24歲的島民納丁·莫拉萊斯說:“我們有點難過……但海水一點一點地淹沒了這個島嶼憾赁∥坌啵”她補充道:“最近,我發(fā)現(xiàn)氣候變化產(chǎn)生了重大影響……潮汐的水位比以前更高龙考,而且酷熱難當(dāng)蟆肆。”莫拉萊斯女士表示晦款,她希望她的社區(qū)在新的地點能夠繁榮炎功。她的新家將位于距離船只前往加爾迪·蘇格杜布的港口兩公里處,這是一項價值1200萬美元的政府開發(fā)項目缓溅。
Tip
git 切換分支
- git branch 查看當(dāng)前分支
- git branch -r 查看遠程倉庫的分支列表
- git checkout <branch-name> 切換到已存在的分支
- git checkout -b <new-branch-name> 創(chuàng)建并切換到新分支
在切換分支前蛇损,確保你的工作目錄是干凈的(沒有未提交的更改)。如果有未提交的更改坛怪,可以使用git stash
命令將其暫存起來淤齐,然后再切換分支。
Share
布利斯定理:用較多的時間為一次工作事前計劃袜匿,做這項工作所用的總時間就會減少更啄。
- 啟示1:事前先思考,事后少煩惱居灯。
- 啟示2:事先做計劃祭务,成功概率大。
- 啟示3:拆分大目標(biāo)怪嫌,再各個擊破义锥。
凡事預(yù)則立,不立則廢岩灭,好計劃是成功的開始拌倍。
本文由mdnice多平臺發(fā)布