Latest

LeetCode系列文章

[LeetCode]超級無恥的過關方法

以下方式請斟酌使用 最近又開始玩 LeetCode 的題目,想要來寫些文章充實一下部落格 無意間發現一種非常無恥的過關方式 利用這種方式保證過關且都是0ms 這是怎麼做到的呢?? 我們就拿第五題來當範例 Java版本 class Solution { public boolean isMatch(String s, String p) { boolean x = false; System.exit(0); return x; } } Python版本 class Solution: def isMatch(self, s: str, p: str) -> bool: os._exit(0) 將以上程式碼拿去任何一道程式題都可以完美過關 只需要修改一下回傳的部分讓編譯通過 不得不說這真是非常無恥阿~~~ 利用這種方式可以刷出非常好看的過關紀錄 若希望在履歷上可以寫上 LeetCode 全通關 這幾個字的人可以嘗試一下

By Michael

LeetCode系列文章

[LeetCode] #3 Longest Substring Without Repeating Characters 解題

題目連結 題型解說 這是一題難度為普通的題目 需要設計一個方法,此方法會傳入一個字串 s 要求是找出字串內連續且不重複的字元的長度 abcabcbb => abc => 3 pwwkew => wke => 3 解題思路 創建一個 List ,並走訪一遍字串 遇到 List 沒有的字元就加入 遇到重複的字元就比較當下最大長度與前面最大長度 並且把重複字元前的所有字元移除 程式碼 Java public class Solution { public int lengthOfLongestSubstring(String s) { if (s == null) { return 0; } if (s.length() < 2) { return 1; } int max = 0; List li

By Michael

LeetCode系列文章

[LeetCode] #2 Add Two Numbers 解題

題目連結 題型解說 這是一題難度為普通的題目 需要設計一個方法,此方法有兩個 Linked lists 參數 這兩個參數有以下特性 1. 皆為正整數 2. 鏈表中的數字順序相反 3. 沒有前導0,也就是不會出現 080 這種數字 4. 兩者都非空 要求是加總這兩個鏈表中的數字後以倒序的方式回傳 解題思路 創建兩個鏈表變數,一個代表起始點,一個代表結束點 一個 while 迴圈走訪所有的元素做加總 程式碼 Java public class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode temp = new ListNode(0); ListNode result = temp; int num1

By Michael

LeetCode系列文章

[LeetCode] #1 Two Sum 解題

題目連結 題型解說 這是一題難度為簡單的題目,主要是用來暖個身 需要設計一個方法,此方法有兩個參數 第一個參數是一個數字的數組,第二個參數是一個目標數字 要求是找出數組中哪兩個數字相加等於目標數字 回傳索引 解題思路 大多數人(包括我)的第一印象就是利用兩個迴圈來計算出結果 當然相信這種方法也是可以得出一樣的答案 但是效率上就會比較低效 而且也過不了LeetCode的測試案例 所以得換個方式,利用空間換取時間 創建一個Map,Key紀錄數字、Value紀錄索引 目標數減去當下數字的差存在Map中,直接回傳結果 不存在則將當下數字存入Map 程式碼 Java public class Solution { public int[] twoSum(int[] nums, int target) { Map temp = new HashMap<>(); for (int i = 0, len = nums.length

By Michael

走過的坑

[坑]IE11之Javascript Bug

前言 其實我也不知道這到底算不算Bug 更多的像是一種功能上的不完善或未定義 那就來看看這個問題怎麼重現吧 重現步驟 這次工作上遇到的情況是出現在 Javascript 的 Date 物件

引發錯誤的部分是 2019-09-25 00:00:00 這樣子的日期格式,IE11不支援 錯誤內容為SCRIPT5001: 必須要有數字 必須把 - 取代成 / 2019/09/25 00:00:00 支援度 Chrom

By Michael

PHP系列文章

[PHP]Account Kit 使用教學

前言 Account Kit 是由 Facebook 所提供的服務 原意是可以讓開發者不需要去處理帳號與密碼的問題 也可以把此服務當作驗證手機或是Email來使用 剩下詳細的部分可以到 AccountKit 總覽去理解 此篇文章主要部分是紀錄如何申請使用該服務 Step 1 使用此服務必須先使用 Facebook 的開發者帳號 開啟 Facebook Developers 網址 點選右上方的開始使用,選擇一些選項 接下來點下 建立首款應用程式 輸入 應用程式名稱 及 電子信箱 建立成功後就會到該應用程式的頁面 上方應用程式編號之後會用到 Setp 2 接下來在新增產品下面找到 Account Kit 並點下設定 操作完成後注意左方的應用程式中加入了 Account Kit,一樣點下設定 直接按下開始使用,會進入 Account Kit 的設定頁面 因為此篇文章示範的環境是 手機號碼 + Web,所以除了右上角的選項開啟之外,

By Michael

Arduino系列文章

[Arduino]開發智慧型家電,紅外線篇

前言 在一個非常炎熱的夏天,下班回到家等待自己的是30度的高溫 除了眼神死依然還是眼神死,只能馬上把冷氣打開 那麼有沒有辦法在回家的路上就把冷氣給打開呢?? 今天這篇文章就是分享給大家我是怎麼製作自己的智慧型家電 我是一個新手Arduino玩家,文章內容若有錯誤請多多包涵 準備材料 一顆紅外線接收器,台灣普遍家電遙控器使用的是 38KHz 的頻率,購買前請先確認好 一顆紅外線發射器,一樣要確認可以發射 38KHz 的頻率 兩顆 LED,我選擇買高亮綠光,可以直插3.3V 其他顏色的可能要確認是不是需要加電組 兩顆復位開關,開關就買自己喜歡的就好 非常好用的杜邦線,公+公 公+母 各一包 一顆 100歐姆 的電阻 一顆 NodeMCU CH340G,直接實現WIFI功能 以上價格請自行參考,我是在實體店買的,網路可能會比較便宜 概念 平常網路上搜尋到的紅外線教學 幾乎都是教你先利用接收器接收遙控器的紅外線頻率,再把數值寫死在程式碼中 再透過發射器送出頻率 這

By Michael

PHP系列文章

[PHP]免費虛擬空間申請教學

前言 有時候想用PHP寫個小網站,但又不想特地去花錢買一台主機 這時候免費虛擬空間就發揮作用了 但免費的缺點也是很明確的 運算力低、流量限制、空間限制、幫主機商做SEO...等等 不過低負荷的小網站還是可以使用,這點請放心 這篇教學使用的主機商是 000webhost 是一間老主機商了,免費的規格如下 規格表 Step 1 會員註冊 只需要填寫郵箱跟密碼,很簡潔 Step 2 註冊完並且點擊確認郵件的超連結後,會導到後台 一開始會要回答一些問卷之類的,直接跳過就好 到了後台,點選右上角的 Create New Site 創建一個網站 Website Name 其實是網站分配給你的次網域名稱,如果不填就是隨機生成 Ex. 網站名稱: mike,分配的網址: mike.000webhostapp.com 密碼部分請記下來 Step 3 創建好後,就會顯示在列表中

By Michael

Arduino系列文章

[Arduino]Arduino IDE 使用 NodeMCU

前言 NodeMCU 是整合了WIFI功能的開發版 對於開發上需要使用到網路的朋友來說,是一個不錯的選擇 但買來的時候並不能直接燒入使用,還得要做一些事先準備 驅動安裝 一般來說 Windows 應該會自動抓到需要的驅動並安裝 如果是像下面的圖片並沒有裝上驅動的話 可以視使用的晶片去下載驅動 cp2102驅動 ch340驅動 Step 1 檔案 > 偏好設定,在額外的開發版管理員網址欄位中輸入以下網址後確定 http://arduino.esp8266.com/stable/package_esp8266com_index.json Step 2 工具 > 開發版 > 開發版管理員,輸入 nodemcu 後安裝 ESP8266 套件 Step 3 安裝完畢後就可以在開發版選擇 NodeMCU 1.0 了 測試 寫一個簡單的點亮LED程式,來測試一下運作正不正常 LED正極腳位接到

By Michael

Python系列文章

[Python]開發Sublime Text外掛

前言 不知道什麼時候,漸漸的從 Notepad++ 轉移到了 Sublime Text 最主要的原因應該還是 Sublime Text 提供了多行編輯功能以及實時搜尋高亮功能吧 在各式各樣IDE發展的時代,這種文字編輯器也是越來越少了 上一篇教大家如何用 JavaScript開發Chrome擴充功能 那麼今天就來嘗試一下開發 Sublime Text 的外掛功能吧 環境 Sublime Text 3 Step 1 這次想要實現的外掛功能呢,是自動為 PHP Function 加上註解,註解的格式內容如下 /** * 方法名稱 * function description * * @date 今天日期 * @version 1.0.0 * @author * @param 參數型態 參數名稱 參數預設值 * @return */ 熱鍵就設定 Ctrl + Shift + c

By Michael

JavaScript系列文章

[JavaScript]開發Chrome擴充功能

前言 Chrome瀏覽器商店內有非常多好用的擴充功能可以安裝 那麼有沒有想過自己也嘗試開發自己的擴充功能呢?? 今天這篇文章將簡單敘述如何開發Chrome的擴充功能(一鍵開啟多數網址) Step 1 在喜歡的地方建立一個資料夾當作根目錄,名稱隨意 進入根目錄後建立兩個資料夾,images 及 js images資料夾內建立兩張圖片,icon.png (尺寸為64px * 64px) 及 icon_big.png (尺寸為128px * 128px) 作為擴充功能顯示的圖示 js資料夾內建立 run.js 檔案 根目錄下建立兩個檔案,index.html 及 manifest.json manifest.json 請貼上以下內容 { "manifest_version": 2, "icons": { "128": "images/icon_big.png" }, "description": "open multiple

By Michael

Python系列文章

[Python]在CentOS 6安裝Python 3.7

前言 若想要安裝最新版本的Python,可以從官網下載原始碼自己編譯安裝 以下將會紀錄全部的安裝步驟 與 CentOS 7 不同的是,需要另外裝其他的套件才有辦法更新到Python 3.7 若是 CentOS 7 請看這一篇 [Python]在CentOS 7安裝Python 3.7 Step 1 安裝所需要的套件 yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel wget xz xz-devel libuuid-devel gdbm-devel Step 2 安裝LibreSSL 因為Python 3.7需要新的OpenSSL,否則會出現以下錯誤 Could not build

By Michael

Python系列文章

[Python]在CentOS 7安裝Python 3.7

前言 若想要安裝最新版本的Python,可以從官網下載原始碼自己編譯安裝 以下將會紀錄全部的安裝步驟 若是 CentOS 6 請看這一篇 [Python]在CentOS 6安裝Python 3.7 Step 1 安裝所需要的套件 yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel wget Step 2 下載官方原始碼 wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz Step 3 解壓縮檔案並進入目錄

By Michael

Java系列文章

[Java]教你網路爬蟲基本觀念及實作

開了一篇新教學,使用新的 IDE 及 方便的套件 [Java]手把手帶你實作PTT爬蟲(1)-文章列表                     簡單來說網路爬蟲就是自動去蒐集網站內容 進而從網站的內容中,截取關鍵字進行建檔 再截取其中的網址繼續爬下去 所以今天我們就拿一個網站來試驗 看看爬蟲是怎麼抓資料的 今天選的網站是鼎鼎大名的SOGO論壇 什麼??你說你不知道??嗯...不要問很可怕 我們先來講解一下最基本的觀念 你丟出去,對方丟回來 所有的網站皆是如此!!很單純 複雜的是有些網站的驗證機制不好過 這次我們使用Chrome的F12來分析網站 Step 1 開啟網站點下F12,切到Network,勾選Preserve log Step 2 我們先從登入開始 點一下上方的登入,觀察一下右邊出現的Log 可以發現點下去的第一時間,向一個網址發送了GET請求 點進去可以看到請求的詳細內容 往下拉到底可以到看Query St

By Michael

Android系列文章

[Android]透過SAF取得外接SDCard操作權限

前言 在Android中,SDCard有分成兩種 1. 手機內附SDCard 2. 外接SDCard 如果是第一種,只需要在AndroidManifest.xml中加入以下權限即可操作 對於第二種,4.4(KitKat)版之後因GOOGLE政策關係 已經拒絕第三方APP在data資料夾外做操作,原因眾說紛紜 但在5.0(Lollipop)版後,大概是因為很多開發者的抱怨(?) GOOGLE擴充了SAF(Storage Access Framework)的功能 使得開發者又可以對SDCard為所欲為了(?) Step 1 static final int DIRECTORY_CHOOSE_REQ_CODE = 42;

By Michael