畢生追求為之懶

人類太複雜了,還是電腦單純些,不定期分享一些技術文章,よろしくね~

Latest

[LeetCode] #12 Integer to Roman 解題

題目連結 題型解說 這是一題難度為普通的題目 需要設計一個方法,此方法會傳入一個整數 num 要求是把整數轉換成羅馬字母,轉換清單如下 I => 1 V => 5 X => 10 L => 50 C => 100 D => 500 M => 1000 但羅馬字母有一些特殊規則 4 並非 IIII 而是 IV,9 並非 VIIII 而是 IX 這規則同樣可以套用到 40 90 400 900 解題思路 既然知道特殊規則是一樣的,變得是使用的符號,那麼先從 num 取個位數開始 轉換完成後,把 num 除上 10,消除個位數,

By Michael

[LeetCode] #11 Container With Most Water 解題

題目連結 題型解說 這是一題難度為中等的題目 需要設計一個方法,此方法會傳入一個數字陣列 height 陣列中的元素代表每一個柱子的高度 現在需要計算出,該陣列中以某兩隻柱子為邊界,最多可以裝多少水 以範例來說 height = [1,8,6,2,5,4,8,3,7] 最多可以裝 7 * 7 = 49 單位的水 解題思路 計算面積就是底乘上高 底的計算方式為 「右邊柱子的 index」 減去 「左邊柱子的 index」 高就取最短的那一根柱子高度 拿題目給的例子來當範例 建立三個變數 result、left、right left、right 代表左右兩邊的 index result 代表目前最大容量,初始值 0 第一步,找出最短的柱子高度,

By Michael

[LeetCode] #941 Valid Mountain Array 解題

題目連結 題型解說 這是一題難度為簡單的題目 需要設計一個方法,此方法會傳入一個數字陣列 arr 判斷陣列中的元素是不是由低到高再從高到低(山形)的排序,且不連續一個以上數字 比如說 [1,2,3,2] 就是一個山形陣列,但 [1,2,2,3,2] 不是,因為有兩個 2 [1,2,3,4,5] 和 [5,4,3,2,1] 也不算是山形陣列,前者只有往上沒有往下,後者相反 解題思路 準備一個數字變數(temp)和布林變數(asc),跑一次迴圈,有可能遇到如下狀況 1. 某個數字與前一個數字相同,這時候直接回傳 false

By Michael

[LeetCode] #944 Delete Columns to Make Sorted 解題

題目連結 題型解說 這是一題難度為簡單的題目 需要設計一個方法,此方法會傳入一個字串陣列 strs 這個陣列中每個字串的長度都相同,字串內容都是小寫英文 需要檢查每個元素的第 N 個字元是不是由小至大排列,並回傳有幾個錯誤排列 比如傳入的陣列長這樣 ["cba","daf","ghi"] 取第一個字元 = cdg 取第二個字元 = bah 取第三個字元 = afi 其中第二組的結果(bah)並不是由小至大排列,故回傳 1 解題思路 這一題就用兩個迴圈各別把字元取出來,並比較是否比上一個字元大(Java 中的字元可以直接比較),如果不是就將結果+1 程式碼 Java class Solution { public int minDeletionSize(String[] strs) { int result = 0; for (int i = 0,

By Michael

[Java]手把手帶你實作PTT爬蟲(2)-文章內容及儲存

前言 上一篇教學實作了一個簡單的爬蟲並成功的爬到了 PTT 的文章列表 這次就繼續將 PTT 文章內容給爬回來然後儲存到電腦上 必備知識 1. 上一篇所列的知識 2. 多型 3. 介面 4. 執行緒 5. 檔案處理 獲取文章內容 這邊就直接放出程式碼了,大多都是上一篇說明過的部分 在 ptt.crawler.Reader 中加入以下 Method public String getBody(Article article) throws IOException { /* 如果看板需要成年檢查 */ if (article.getParent().getAdultCheck()) { runAdultCheck(article.getUrl()); } /* 抓取目標頁面 */ Request request = new Request.Builder() .url(Config.

By Michael

[Java]手把手帶你實作PTT爬蟲(1)-文章列表

前言 好幾年前寫過一篇 Java 的爬蟲文章,好像是我部落格內最受歡迎的一篇... 時過境遷,Eclipse 退流行了、Java 出到 15 了,加上一些因素 打算把爬蟲文章重新寫過一遍,這次會當是做一個 Site project,盡量把內容充實一點 預計這系列文章應該會寫個五六篇以上,後面也會教到資料庫及圖形化介面 必備知識 1. 常用 Http request   Ex. get post 2. Cookie 相關知識 3. HTML相關知識 4. CSS 選擇器相關知識 5. Java OOP 相關知識 使用環境 1. Intelli J 2. Chrome 創建專案 這次我們使用的 IDE 是

By Michael

[後製]小技巧-三個初學者配音時需注意的項目

配音 這篇主要是分享一下配音時需要注意的項目 這邊的配音指的是後製影片時才加入的聲音,而不是錄影時的錄音 需要用到配音的情況可能有以下幾種 1. 拍片現場太吵雜,收音效果不佳 2. 需要旁白 3. 需要多語言 先寫好稿子 配音時能一邊看稿一邊配是比較好的選擇 一來可以不用記太多字,二來配音會很通順,三來重配時不會忘記上一次講了甚麼,四來拍片時可以預留時間長度 拍/剪片時預留好配音的時間長度 我自己第一次配音時遇到最大失誤點就是剪完片要配音時 遇到很多次原本的台詞沒辦法在預定的畫面中說完 但是影片已經剪好了,總不可能全部重來,所以只好改台詞 這邊建議是在拍/剪片時能夠預先抓好要配音的長度 配音時錄一句確認一句 在不熟悉眾多修音軟體的情況下 最好的方式就是把一句錄好後再錄下一句 雖然說這種方式要重複的 撥放 -> 聆聽 -> 重配 的循環 但這是最能確保整部影片配音的品質是落差不大的 比如聲音忽大忽小、卡頓、雜音、環境音...等等 後記 這篇是我配音後得到的一點小小心得,因為我是一人團隊 拍片

By Michael

[LeetCode] #122 Best Time to Buy and Sell Stock II 解題

題目連結 題型解說 這是一題難度為簡單的題目 需要設計一個方法,此方法會傳入一個整數陣列 prices 這個陣列表示每一天的股票價格,若可以購買無數次(買入 + 賣出) 回傳最大利潤是多少 解題思路 這一題是 [LeetCode] #121 Best Time to Buy and Sell Stock 解題 的延伸 上一題是要求只能買一次,這一題是可以買無數次 但規則一樣是手頭有買入的股票前不能再買入 一開始解法是把所有的狀況走一遍,找出利潤最好的那個 後來看了官方提供的思路,其實只要用迴圈歷遍一次,只要比明天的價格低就把差價算到利潤去 因為最大的利潤可以拆成多個小利潤的和 程式碼 Java class Solution { public int maxProfit(int[] prices) { int resule = 0; for (int i = 0; i

By Michael

[後製]小技巧-如何下載 Google 小姐語音

教學 如何簡單下載 Google 小姐的語音? 最簡單的方法就是在下面的網址最後加入想要的文字 https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&tl=zh-TW&q= 比如想要讓 Google 小姐說出「你好」,只需要在網址最後加上你好,像這樣 https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&tl=zh-TW&q=你好 之後就可以下載語音了 大量下載 如果想要大量下載的話,我推薦我自己製作的 Miss Google 後記 在沒有預算買麥克風或是想要做點效果的時候,Google 小姐語音是一種不錯的替代方案 有空可以嘗試看看唷

By Michael

[後製]使用 Photoshop 對文字加外框

前言 製作影片縮圖時都會用一些文字來敘述,但是只使用文字又覺得有些單調 那麼就來幫個文字加個外框吧。 如果沒有 Photoshop 的話,也可以使用一些線上的類 Photoshop 今天就用一個類 Photoshop 的網站 https://www.photopea.com/ 來當範例 最後有附上操作影片,可以搭配著圖文一起觀看 教學 開啟網站後看到初始畫面,點下 New Project 調整一下你要的參數,按下 Create 進入編輯畫面後,利用左邊的文字工具在畫布上寫上想要的文字 再來按住 Ctrl 後對著文字旁邊的小框框用滑鼠左鍵點一下,之後應該可以看到文字週遭出現虛線 之後選擇上方的 Select -> Modify -> Expand 輸入想要的外框大小,這邊用 10px 當範例 點下 ok 之後可以看到原本的虛線往外擴張了 再來點選右下角的 new layer 來增加一個新圖層

By Michael

[LeetCode] #121 Best Time to Buy and Sell Stock 解題

題目連結 題型解說 這是一題難度為簡單的題目 需要設計一個方法,此方法會傳入一個整數陣列 prices 這個陣列表示每一天的股票價格,若只能購買一次(買入 + 賣出) 回傳最大利潤是多少 解題思路 原本我是利用兩個索引左右移動想辦法找出最大利潤是哪一個 但總會有一些例外狀況導致算法不通過 這題想了很久也沒想出怎麼寫才是有效率的 後來就放棄去找答案,原來只要紀錄下當下最小值與最大利潤 下次遇到更小的值就更新一下,繼續計算最大利潤就好 程式碼 Java class Solution { public int maxProfit(int[] prices) { int result = 0; int min = Integer.MAX_VALUE; for (int i = 0, len = prices.length; i < len; i++) { min = Math.min(min,

By Michael