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判断即可。