哎呀呀哎呀呀,沒想到距離上一次打卡已經過去N天了,這N天有點難熬呀。一邊趕着項目,一邊又盯着留言,生怕有人催更,這不,昨天就有留言來催更了,哈哈哈哈。真的是想什麼來什麼。
簡單說下這N天的狀況哈,國慶去了趟西安,聆聽了西安的歷史,感覺棒棒噠。但是,西安和浙江國慶期間溫度天壤之別,小編回到浙江之後,就華麗麗地躺下了。我平時也很注重鍛鍊的呀,每週的籃球,跑步都不間斷,沒想到還是沒抗住,身體素質賊差,程序員果然還需要多動多動多動。
加上忙着準備項目的優化,重構還有一些瑣事(我是真的努力地在找理由有木有)。今天重新打卡的感覺,別提有多好了,這件事,做久了,真的還是挺爽的。廢話也不來了,趕緊的走起!
Algorithm LeetCode算法
二分查找https://leetcode-cn.com/problems/binary-search/
)
題目描述:給定一個n
個元素有序的(升序)整型數組nums
和一個目標值target
,寫一個函數搜索nums
中的 target
,如果目標值存在返回下標,否則返回 -1。
示例1:
輸入: nums = [-1,0,3,5,9,12], target = 9
輸出: 4
解釋: 9 出現在 nums 中並且下標爲 4
示例2:
輸入: nums = [-1,0,3,5,9,12], target = 2
輸出: -1
解釋: 2 不存在 nums 中因此返回 -1
提示
1. 你可以假設 nums 中的所有元素是不重複的。
2. n 將在 [1, 10000]之間。
3. nums 的每個元素都將在 [-9999, 9999]之間。
解題思路
小編一直覺得二分法沒有學好,所以直接選定目標,標題就是二分法查找,以此來的鍛鍊下二分法的學習思路。
在做這個練習的時候,還學會了關於二分法的很多玄學。其實,二分法看起來很簡單(是簡單吧?),但是總是感覺自己會出錯,還需要更多的調試才能得到答案。
參考Knuth大佬(KMP
算法的那位)來說:Although the basic idea of binary search is comparatively straightforward, the details can be surprisingly tricky
。簡單翻譯下就是:思路很簡單,細節是魔鬼。
這也從側面反應了,我們平時也程序,需要注重細節的問題,尤其是算法題,很多邊界問題,都是細節問題,你做的多了,就會明白了。
先來看下,二分法查找的基本框架,這個框架的參考,是來自題解區的一位寫的,後面還有更精彩的關於二分法的介紹,在下文會說。先給出解決我們這個問題的基本框架:
int binarySearch(int[] nums, int target) {
int left = 0, right = ...;
while(...) {
int mid = (right + left) / 2;
if (nums[mid] == target) {
...
} else if (nums[mid] < target) {
left = ...
} else if (nums[mid] > target) {
right = ...
}
}
return ...;
}
有了上面的框架,接下來就是根據框架,進行填鴨式題解:
public static int search(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
while (left <= right) {
int mid = (right + left) / 2;
if (nums[mid] == target) {
return mid;
} else if (nums[mid] < target) {
left = mid + 1;
} else if (nums[mid] > target) {
right = mid - 1;
}
}
return -1;
}
是吧,照貓畫虎的本事你總該會吧,根據這個框架,是不是很快就能找到題解了呢。
參考
https://leetcode-cn.com/problems/binary-search/solution/er-fen-cha-zhao-xiang-jie-by-labuladong/
上面的題解,很精彩是不是。主要還是參考了題解區的說明,不然小編也不能總結的如此之好。
其實,二分法還有幾個基本場景:尋找一個數、尋找左側邊界、尋找右側邊界我們這裏,用的是第一種,尋找一個數。後面兩個場景,也有題目的,我們下次來攻克它。
感興趣的,可以先看下https://leetcode-cn.com/problems/binary-search/solution/er-fen-cha-zhao-xiang-jie-by-labuladong/
這裏的說明,或者點擊【閱讀原文】去查看,先做個預習,好爲我們的下次準備。
Review 閱讀並點評至少一篇英文文章
Why SafeGraph Does Written Interviews (and Why Your Company Should Do Them Too)https://blog.safegraph.com/why-safegraph-does-written-interviews-and-why-your-company-should-do-them-too-bbe4b1afab90
)
你是不是經常聽到,現在的每個人都需要寫作能力,無論你在什麼崗位;你是否經常看到,很多通過寫作而獲得更好的工作的情形;你是否看到,身邊寫作能力好的,都混的不太差呢?
以前一直覺得只有在國內是這樣的,但是,今天看完這個,才發現國外也是需要寫作能力的。而且,他們的要求更狠,是在面試過程中加入寫作,“在家裏寫下答案”。
通過“在家裏寫下答案”這個環節,面對面快問快答式的傳統面試方法並不適用於多數職位(可能適用於銷售);要考察基本的寫作能力,寫作是當代腦力勞動者溝通的主要手段。
文中還列舉了爲什麼要寫作的幾個例子,比如
Written interviews give everyone in the company a baseline about the candidate
Written interviews help reduce the biases in favor of people that think fast on their feet that are inherent in live interviews
面試中,會遇到哪些面試官精心設計的問題呢?
Expectations Questions.
Research Questions.
Thought Questions.
最後,還提到一點,面試者也可以向公司提問。其實,現在很多流程也是這樣的,當你在和HR聊的這個環節,就可以準備幾個自己精心想過的問題,以此來更好的瞭解你所面試的公司。這個,國外也是如此噢。
該篇說了,書面面試,也是一種選拔的方式,摻雜在面試的環節裏面。那平時注重寫作的同學,在這個環節肯定是高人一等了,相對來說那就是能更接近offer一步,所以,你還在猶豫什麼,趕緊寫作起來。
需要幫助,需要我幫你審覈的,我都可以啊,好歹我也是上過專業的寫作課,做過專業的練習呢。如果你還沒開始寫作,那麼請你從現在開始,走起吧!
Tip 一個技術技巧
這次,還是延續之前Linux的常用命令,先前已經到了15,今天繼續16-20的分享。
-
bzip2
創建*.bz2壓縮文件
$ bzip2 test.txt
解壓*.bz2文件
bzip2 -d test.txt.bz2
-
uzip
解壓*.zip文件
$ unzip test.zip
查看*.zip文件的內容
$ unzip -l jasper.zip
Archive: jasper.zip
Length Date Time Name
-------- -------- ------- ----------
40995 11-30-98 23:50 META-INF/MANIFEST.MF
32169 08-25-98 21:07 classes_
15964 08-25-98 21:07 classes_names
10542 08-25-98 21:07 classes_ncomp
-
shutdown
關閉系統並立即關機
$ shutdown -h now
10分鐘後關機
$ shutdown -h +10
重啓
$ shutdown -r now
重啓期間強制進行系統檢查
$ shutdown -Fr now
-
ftp
ftp命令和sftp命令的用法基本相似連接ftp服務器並下載多個文件
$ ftp IP/hostname
ftp> mget *.html
顯示遠程主機上文件列表
ftp> mls *.html -
/ftptest/features.html
/ftptest/index.html
/ftptest/othertools.html
/ftptest/samplereport.html
/ftptest/usage.html
-
crontab
查看某個用戶的crontab入口
$ crontab -u john -l
設置一個每十分鐘執行一次的計劃任務
/10 * /home/ramesh/check-disk-space
Share 一篇有觀點和思考的技術文章
設計模式走起來。
公衆號地址:設計模式之迭代器與組合模式(四)
「奔跑吧攻城獅」感謝大家的關注,現在後臺回覆「設計模式」贈你小編精心挑選設計模式書籍。小編正打造一個高質量交流羣,回覆「加羣」即可解鎖,也可直接微信(xuyue4087)私聊解鎖。