ARTS打卡第五周
Algorithm:每周至少做一個(gè) leetcode 的算法題
717. 單調(diào)數(shù)列
如果數(shù)組是單調(diào)遞增或單調(diào)遞減的,那么它是單調(diào)的。
如果對于所有 i <= j诚镰,A[i] <= A[j],那么數(shù)組 A 是單調(diào)遞增的。 如果對于所有 i <= j握础,A[i]> = A[j]点楼,那么數(shù)組 A 是單調(diào)遞減的扫尖。
當(dāng)給定的數(shù)組 A 是單調(diào)數(shù)組時(shí)返回 true,否則返回 false掠廓。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/monotonic-array
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有换怖。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處蟀瞧。
代碼:
bool isMonotonic(vector<int>& A) {
bool isMin = true;
bool isMax = true;
int min = A[0];
int max = A[0];
int aSize = A.size();
for (size_t i = 1; i < aSize; i++)
{
if (isMin)
{
if (A[i] <= min)
{
min = A[i];
}
else
{
isMin = false;
}
}
if (isMax)
{
if (A[i] >= max)
{
max = A[i];
}
else
{
isMax = false;
}
}
if (!isMin && !isMax)
{
break;
}
}
return isMin | isMax;
}
解題思路:
單次遍歷沉颂,一旦既不是單調(diào)遞增數(shù)列也不是單調(diào)遞減數(shù)列,返回false悦污;其余情況返回true
官方解答:
bool isMonotonic(vector<int> &A) {
bool inc = true, dec = true;
int n = A.size();
for (int i = 0; i < n - 1; ++i) {
if (A[i] > A[i + 1]) {
inc = false;
}
if (A[i] < A[i + 1]) {
dec = false;
}
}
return inc || dec;
}
作者:LeetCode-Solution
鏈接:https://leetcode-cn.com/problems/monotonic-array/solution/dan-diao-shu-lie-by-leetcode-solution-ysex/
來源:力扣(LeetCode)
著作權(quán)歸作者所有铸屉。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處切端。
官方答案代碼更加的簡潔彻坛,取反情況規(guī)律尋找較為清晰,不過都為false時(shí)可以停止循環(huán)踏枣,是一個(gè)優(yōu)化點(diǎn)
Review:閱讀并點(diǎn)評至少一篇英文技術(shù)文章
追求無警告的代碼昌屉,可能使得循環(huán)無法退出,這是日常工作中需要面對的一個(gè)問題茵瀑,需要程序員對此保有敬畏心里间驮,修改警告代碼關(guān)于size_t的循環(huán)時(shí),記得保證謹(jǐn)慎思考
Tip:學(xué)習(xí)至少一個(gè)技術(shù)技巧
臨界區(qū)是可以遞歸的瘾婿。
在此前我一直認(rèn)為臨界區(qū)是不可以遞歸的蜻牢,同一線程需要同一個(gè)臨界區(qū)之后會進(jìn)行死鎖的問題。然而實(shí)際不是偏陪,同意線程進(jìn)入臨界區(qū)會導(dǎo)致臨界區(qū)的引用計(jì)數(shù)加一抢呆,只要退出時(shí)保證釋放臨界區(qū),就不會導(dǎo)致死鎖問題笛谦。
Share:分享一篇有觀點(diǎn)和思考的技術(shù)文章
面試抱虐,是雙向的。
其饥脑,可以讓用人單位了解面試者的具體技術(shù)實(shí)力恳邀,項(xiàng)目經(jīng)驗(yàn)以及個(gè)人性格懦冰。也可以讓面試者了解到用人單位的技術(shù)棧、技術(shù)水平等谣沸。
不用放低姿態(tài)刷钢,程序員就用程序員的方式去面試,否則乳附,很可能在新的工作中無法長久的待下去内地。畢竟可以裝一時(shí),無法裝一世赋除。共勉阱缓。有時(shí)間會分享我的面試經(jīng)歷。