0x00 引言
爲獲取一個良好的算法思維,以及不再成爲一個腳本小子,爭取每天一道算法題,培養自己的邏輯思維,溫顧各類型語言語法知識。
題解只寫自己理解的解法,其他解法不再增加。題目與解析均在代碼裏面。
0x01 難度等級
簡單
0x02 代碼
package 簡單; import java.util.Scanner; /* 以上三角形的數陣,第一行只有一個數1,以下每行的每個數,是恰好是它上面的數、左上角數和右上角的數,3個數之和(如果不存在某個數,認爲該數就是0)。 求第n行第一個偶數出現的位置。如果沒有偶數,則輸出-1。例如輸入3,則輸出2,輸入4則輸出3,輸入2則輸出-1。 數據範圍: 1 \le n \le 10^9 \1≤n≤10 輸入描述: 輸入一個int整數 示例1 輸入: 4 輸出: 3 * */ public class 楊輝三角 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //輸入n int n = sc.nextInt(); if (n == 1 || n == 2) { System.out.println(-1); } else if (n % 4 == 1 || n % 4 == 3) { System.out.println(2); } else if (n % 4 == 2) { System.out.println(4); } else if (n % 4 == 0) { System.out.println(3); } } }
0x03 算法思想
看着挺難的,實際上不難:
找規律:
n | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | …… |
---|
index | -1 | -1 | 2 | 3 | 2 | 4 | 2 | 3 | 2 | 4 | 2 | …… |
一個一個的找規律就會發現,只要對4取餘,能得到0,1,2,3的規律。這樣只要寫個if判斷即可。