NodeJS + Express 開發筆記(一)

Express API獲取傳遞來的參數方法:

POST的四種方法:
1. application/x-www-form-urlencoded
可以把參數放在URL內傳遞,瀏覽器原生的form表單。

在Express中,使用bodyParser.urlencoded,即可取得query的字串


Java練習題(四):一種特殊排序法

最近希望花點時間,重新訓練自己解題的能力,故找了一些經典的題目進行練習。
解法不一定是最有效率、最低複雜度、最佳效能的,完全是依照自己的想法做!

---

假設題目要求:給一串整數數列,並根據數列長度為奇數或偶數有不同排序方式,
ex: 若數列長度為奇數{1, 2, 3, 4, 5},排序後應為: {2, 4, 5, 3, 1}

ex: 若數列長度為偶數{1, 2, 3, 4, 5, 6},排序後應為: {2, 4, 6, 5, 3, 1}

觀察題目後瞭解,關鍵為最大數的位置及排序方法,若數列長度為奇數,則最大數位置為數列長度 / 2 ,之後根據大小順序為最大數左邊、右邊、左邊、右邊...依序置入。若數列長度為偶數,則最大數位置為數列長度 / 2 - 1,之後根據大小順序為最大數右邊、左邊、右邊、左邊...依序置入。

解題構想:由使用者輸入一數字N, 之後生成數列長度為N的隨機正整數, 並用 Bubble Sort 針對原始數列進行排列。之後根據數列長度為奇數或偶數進行排序,排序時先將最大數插入其位置,之後以最大數將數列分割為左右兩邊,分別以兩個 int 變數儲存下一個數在左邊與右邊的位置;再以一 int 變數判斷目前位置該為最大數的左邊或右邊。

程式碼:

Java練習題(三):Bubble Sort 泡沫排序法

最近希望花點時間,重新訓練自己解題的能力,故找了一些經典的題目進行練習。
解法不一定是最有效率、最低複雜度、最佳效能的,完全是依照自己的想法做!

---

泡沫排序法:給定一數列後,進行排序時會從第一位開始,與第二位進行比較,若數字較大則往前移動兩者互換位置;再用第二位與第三位比較、第三位與第四位比較...。所以當進行第一次後,最大的數已被排在最後面,理論上需要將n個數字都跑一遍,但這邊可使用一個布林變數進行判斷,若有一次沒有進行任何換位的動作代表數列已經是排序完成,後面不需再執行。

假設題目要求:給一任意數N,生成長度為N的整數數列,並以此進行bubble sort。

程式碼可如下:

Java 練習題(二):巴斯卡(Pascal)三角形

最近希望花點時間,重新訓練自己解題的能力,故找了一些經典的題目進行練習。
解法不一定是最有效率、最低複雜度、最佳效能的,完全是依照自己的想法做!

---

巴斯卡三角形長得如下:
             1
           1    1
        1    2    1
    1     3    3    1
  1    4    6    4    1
1............................1

從上圖可以觀察到,從第三層開始,每層的最左、右邊的值為1,其他的第M層第N值為第M-1層的第N-1 + N 的和。

假設題目要求:給任一數字N,印出巴斯卡三角形中第N層的數列。
構想:使用迴圈從3 to N,依序計算出每層的數列,使用兩個Array,一個用來儲存上一層的值、一個用來儲存第N層的值。程式碼如下:



Java 練習題(一):Fibonacci number 費氏數列

最近希望花點時間,重新訓練自己解題的能力,故找了一些經典的題目進行練習。
解法不一定是最有效率、最低複雜度、最佳效能的,完全是依照自己的想法做!

---

先來個暖身吧...

費氏數列範例:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89.....

從以上數列可以觀察到,從第三個數字開始,其值為前兩個數字的相加。
即:2 = 1+1; 3 = 2 + 1; .........
即:Fn = F(n-1) + F(n-2);

假設題目要求:給一數字N,求費氏數列中第N數的值
構想:N = 1 or 2時,直接輸入Ans = 1; 若N >=3,則進入迴圈判斷計算(N=3 to N),利用兩個變數儲存 N-1 與 N-2 的值,程式碼如下:


[Android] 食記 APP

讓使用者從自己的相簿中挑選已有圖片,或者當場開啟相機來拍照,之後再進行後製、上傳等服務;目前有許多這類的 App,所以用這題目當作學習 Android 的第一課!

cocos2d-x Android 專案開發-前置作業(三)

終於到最後一部分啦~
建置 Android NDK 開發環境