左耳聽風(fēng) 第四周
每周完成一個(gè)ARTS: 每周至少做一個(gè) leetcode 的算法題激蹲、閱讀并點(diǎn)評(píng)至少一篇英文技術(shù)文章难裆、學(xué)習(xí)至少一個(gè)技術(shù)技巧瓢棒、分享一篇有觀點(diǎn)和思考的技術(shù)文章瘟裸。(也就是 Algorithm客叉、Review、Tip话告、Share 簡稱ARTS)
Algorithm
先總結(jié) : 這周換了方式 十办, 根據(jù)數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)路線從頭開始刷題 , 在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)知識(shí)的同時(shí)提高自己的編程能力 超棺。 之前的幾周單純的為了做題而做題 , 難題都是看別人代碼實(shí)現(xiàn)的不如自己好好從簡單題做起真正的提高自己的能力 呵燕, 也根據(jù) 耗子叔在 Slack 上對(duì) ARTS 時(shí)間安排的建議進(jìn)行了相應(yīng)調(diào)整 棠绘, 新的一周 希望有更大的進(jìn)步。
LeetCode 66 Plus One
題目鏈接 解題語言 : C
給定一個(gè)由整數(shù)組成的非空數(shù)組所表示的非負(fù)整數(shù),在該數(shù)的基礎(chǔ)上加一氧苍。
最高位數(shù)字存放在數(shù)組的首位夜矗, 數(shù)組中每個(gè)元素只存儲(chǔ)一個(gè)數(shù)字。
你可以假設(shè)除了整數(shù) 0 之外让虐,這個(gè)整數(shù)不會(huì)以零開頭紊撕。
示例 1:
輸入: [1,2,3] 輸出: [1,2,4] 解釋: 輸入數(shù)組表示數(shù)字 123。 示例 2:
輸入: [4,3,2,1] 輸出: [4,3,2,2] 解釋: 輸入數(shù)組表示數(shù)字 4321赡突。
我的思路 : 先從末位進(jìn)行加法 对扶, 逢 10 進(jìn) 1 , 但對(duì) 首位 即最高位進(jìn)行特殊處理 因?yàn)橐獢U(kuò)大數(shù)組長度
待解決問題 惭缰, 歡迎指導(dǎo) : ==如何解決 函數(shù)中 指針 p 的內(nèi)存釋放問題 浪南?==
int* plusOne(int* digits, int digitsSize, int* returnSize) {
//int *p = (int *)malloc(sizeof(returnSize));
*(digits + digitsSize - 1) += 1;
//printf("%d ", *(digits + digitsSize - 1));
for (int i = digitsSize-1; i >=1 ; i--)
{
if (*(digits + i)==10)//從個(gè)位開始做加法 , 滿 10 進(jìn) 1
{
*(digits + i) = 0;
*(digits + i - 1) += 1;
}
}
if (digits[0]==10)// 處理位數(shù)問題 漱受, 當(dāng)首位為 10 時(shí) 數(shù)組長度 +1
{
*returnSize=digitsSize + 1;
int *p = (int *)malloc(sizeof(int)*(*returnSize));
p[0] = 1;
for (int i = 1; i < (*returnSize); i++)
p[i] = 0;
return p;
}
*returnSize = digitsSize;
return digits;
}
Review
Strange and maddening rules
文章來自 耗子叔之前推薦的 博客 Joel on Software 络凿,文章主要描述的還是關(guān)于 StackOverflow 的規(guī)則制定。
感想 : 這篇文章和之前分享的 How To Ask Questions The Smart Way 內(nèi)容有所重合昂羡。
首先 絮记, 在問問題之前 , 先理清自己的問題 虐先, 很多時(shí)候問題我們自己可以解決只是陷入了誤區(qū) 怨愤, 在理清問題時(shí)可能我們就能把問題解決了。
其次 赴穗, 作者提出了 “ 分治法 ” 憔四, 出現(xiàn)程序出現(xiàn)問題不可能是在所有環(huán)節(jié) , 先把程序分成兩部分 般眉, 在可能出現(xiàn)問題的地方尋找 了赵, 不斷細(xì)分問題直至找到問題的答案 , 這和 “ 二分查找法 ” 的思想如出一轍 甸赃, 原本 時(shí)間復(fù)雜度 O(n) 的程序 優(yōu)化成了 O(long2n) 柿汛,在大量數(shù)據(jù)中這樣的處理方法尤為高效。
最后 埠对, StackOverflow 對(duì)于程序員來說是個(gè)不錯(cuò)的網(wǎng)站可以多了解一下络断。
Tip
阿里巴巴矢量庫
國外圖標(biāo)庫
這是以前在了解前端方面收藏的網(wǎng)站 , 一般來說普通程序員在制圖這一塊都不是很擅長 项玛, 而前端方面總是需要很多小圖標(biāo)來配合單一的文字 貌笨, 老是張口求設(shè)計(jì)的幫助也不符合我們 程序員的性格 這時(shí)一些免費(fèi)的圖標(biāo)庫就非常實(shí)用了 , 而且里面的圖標(biāo)質(zhì)量較高 襟沮, 拿來參考也是很不錯(cuò)的锥惋。
share
數(shù)據(jù)結(jié)構(gòu)和算法 鏈表和數(shù)組
根據(jù) 極客時(shí)間 王爭老師的課程開始學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu) 昌腰, 作為一名計(jì)算機(jī)專業(yè)的學(xué)生 了解數(shù)據(jù)結(jié)構(gòu)和算法 既是 基礎(chǔ)課程的學(xué)習(xí)需要 也是提高自己編程能力的根本方法論 。