ARTS打卡第四周
Algorithm:每周至少做一個(gè) leetcode 的算法題
717. 1比特與2比特字符
有兩種特殊字符拙友。第一種字符可以用一比特0來表示姿骏。第二種字符可以用兩比特(10 或 11)來表示。
現(xiàn)給一個(gè)由若干比特組成的字符串嚷节。問最后一個(gè)字符是否必定為一個(gè)一比特字符。給定的字符串總是由0結(jié)束独郎。
示例 1:
輸入:
bits = [1, 0, 0]
輸出: True
解釋:
唯一的編碼方式是一個(gè)兩比特字符和一個(gè)一比特字符果漾。所以最后一個(gè)字符是一比特字符。
示例 2:
輸入:
bits = [1, 1, 1, 0]
輸出: False
解釋:
唯一的編碼方式是兩比特字符和兩比特字符虹曙。所以最后一個(gè)字符不是一比特字符迫横。
注意:
1 <= len(bits) <= 1000.
bits[i] 總是0 或 1.
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/1-bit-and-2-bit-characters
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán)酝碳,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處矾踱。
代碼:
bool isOneBitCharacter(vector<int>& bits)
{
int count = bits.size();
if (count == 1)
{
if (bits[0] == 0)
{
return true;
}
}
if (count == 2)
{
if (bits[1] == 0 && bits[0] != 1)
{
return true;
}
}
if (count >= 3)
{
if (bits[count - 1] == 0)
{
if (bits[count - 2] == 0)
{
return true;
}
int number = 0;
while (true)
{
if (count - 2 - number >= 0)
{
if (bits[count - 2 - number] == 1)
{
number++;
}
else
{
break;
}
}
else
{
break;
}
}
if (number % 2 == 0)
{
return true;
}
}
}
return false;
}
解題思路:
歸納返回true的情況
bits長(zhǎng)度為1時(shí),bits[0]為一比特字符疏哗,返回true呛讲;
bits長(zhǎng)度為2時(shí),bits全為0時(shí)返奉,返回true圣蝎;
bits長(zhǎng)度>=3時(shí),bits后兩位為0 返回true衡瓶,為10時(shí)徘公,判斷連續(xù)1的個(gè)數(shù),偶數(shù)個(gè)返回true哮针,奇數(shù)個(gè)返回false关面。
官方解答:
public boolean isOneBitCharacter(int[] bits)
{
int i = bits.length - 2;
while (i >= 0 && bits[i] > 0) i--;
return (bits.length - i) % 2 == 0;
}
作者:LeetCode
鏈接:https://leetcode-cn.com/problems/1-bit-and-2-bit-characters/solution/1bi-te-yu-2bi-te-zi-fu-by-leetcode/
來源:力扣(LeetCode)
著作權(quán)歸作者所有坦袍。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處等太。
官方答案代碼更加的簡(jiǎn)潔捂齐,極限情況下規(guī)律尋找較為清晰。
Review:閱讀并點(diǎn)評(píng)至少一篇英文技術(shù)文章
C++的多態(tài)情況十分的復(fù)雜且易錯(cuò)缩抡,我們需要十分了解多態(tài)實(shí)現(xiàn)的機(jī)理奠宜,才能在實(shí)際應(yīng)用中不會(huì)出錯(cuò)。
Effective C++中有很多多態(tài)的情況瞻想,可以結(jié)合理解多態(tài)压真,實(shí)際工作中去實(shí)踐多態(tài)的使用
Tip:學(xué)習(xí)至少一個(gè)技術(shù)技巧
本周沒有學(xué)習(xí)新的技術(shù)技巧。
記錄一下簡(jiǎn)單的windbg調(diào)試dump的步驟吧
1蘑险、!analyze -v 自動(dòng)分析崩潰問題
2滴肿、 exce
3、 kn佃迄、kv
4泼差、.frame xx 等位
windbg確實(shí)是很合適windows系統(tǒng)調(diào)試崩潰的工具,里面有著很多應(yīng)用層使用不到的工具呵俏,一旦使用之后可以有一種豁然開朗的感覺堆缘。
PS:不過要說一句,內(nèi)存越界是真的難處理普碎,特別是無法復(fù)現(xiàn)的情況套啤。希望之后工作中,能鍛煉這方面的能力随常,加強(qiáng) windbg潜沦、匯編、調(diào)試的能力绪氛,不僅僅局限在業(yè)務(wù)處理上的代碼編寫唆鸡。
Share:分享一篇有觀點(diǎn)和思考的技術(shù)文章
2020已經(jīng)過去了,去年經(jīng)歷過疫情枣察,經(jīng)歷過公司架構(gòu)調(diào)整争占,很多帶我入公司的人都找尋了新的崗位。接到了一個(gè)比較棘手的項(xiàng)目序目,而且該項(xiàng)目可能會(huì)一直需要后期的維護(hù)臂痕,感到很蛋疼。
不過仔細(xì)想想與之前的工作已經(jīng)有了很大的變化猿涨,不再是階到需求就開始寫代碼的階段握童,開始思考應(yīng)該如何構(gòu)建程序的結(jié)構(gòu),接口的預(yù)留叛赚,等等澡绩。那些我人生中經(jīng)歷過的會(huì)設(shè)計(jì)系統(tǒng)的人啊稽揭,我想說一句你們是真正的牛,我也希望自己可以有這樣的核心競(jìng)爭(zhēng)力肥卡。
繼續(xù)加油溪掀,不只是為了現(xiàn)在,還是為了未來步鉴。