题解 | #杨辉三角的变形#

杨辉三角的变形

http://www.nowcoder.com/practice/8ef655edf42d4e08b44be4d777edbf43

一 遍历杨辉三角左半部分(此方法运行到10000时提示越界,通过率73%)

import java.util.*;

public class YangHui {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[][] arr = new int[n][];
        for(int i = 0; i < arr.length; i++){
            arr[i] = new int[i+1];
            arr[i][0] = 1;
            for (int j = 1; j < arr[i].length; j++) {
                if(i <= 1){
                    arr[i][j] = 1;
                } else {
                    if(j == 1){
                        arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
                    }
                    else if(j == arr[i].length - 1){
                        arr[i][j] = (arr[i-1][j-2] * 2) + arr[i-1][j-1];
                    }
                    else{
                        arr[i][j] = arr[i-1][j-2] + arr[i-1][j-1] + arr[i-1][j];
                    }
                }
            }
        }
        int index = -1;
        for (int j = 0; j < n ; j++) {
            if (arr[n - 1][j] % 2 == 0){
                index = j + 1;
                break;
            }
        }
        System.out.println(index);
    }
}

二 找规律(通过100%)

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
    /*
 1-  0            1
 2-  0            1 1
 3-  2            1 2 3
 4-  3            1 3 6 7
 5-  2            1 4 10 16 19
 6-  4            1 5 15 30 45 51
 7-  2            1 6 21 50 90 126 141
 8-  3            1 7 28 77 161 266 357 393
 9-  2            1 8 36 112 266 504 784 1016 1107
 10- 4            1 9 45 156 414 882 1554 2304 2907 3139
 
规律:
刨去前两行,每4行一个轮回,位数2,3,2,4循环;
     */
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int index = -1;
        if(n > 2){
            if((n-2) % 4 == 1 || (n-2) % 4 == 3){
                index = 2;
            }
            else if((n-2) % 4 == 2){
                index = 3;
            }
            else if((n-2) % 4 == 0){
                index = 4;
            }
        }
        System.out.println(index);
    }
}
全部评论
主要是题目中n的范围有点太大了,要是把n限制的小一点(500以内),第一种方法更通用,即便把题目改成第k个偶数也能给出答案。
点赞 回复 分享
发布于 2022-05-25 10:59

相关推荐

02-22 20:28
重庆大学 Java
程序员牛肉:首先不要焦虑,你肯定是有希望的。 首先我觉得你得好好想一想自己想要什么。找不到开发岗就一定是失败的吗?那开发岗的35岁危机怎么说?因此无论是找工作还是考公我觉得你都需要慎重的想一想。但你一定要避开这样一个误区:“我是因为找不到工作所以不得不选择考公”。 千万不要这么想。你这个学历挺好的了,因此你投后端岗肯定是有面试机会的。有多少人简历写的再牛逼,直接连机筛简历都过不去有啥用?因此你先保持自信一点。 以你现在的水平的话,其实如果想要找到暑期实习就两个月:一个月做项目+深挖,并且不断的背八股。只要自己辛苦一点,五月份之前肯定是可以找到暑期实习的,你有点太过于高看大家之间的技术差距了。不要焦虑不要焦虑。 除此之外说回你这个简历内容的话,基本可以全丢了。如果想做后端,先踏踏实实做两个项目再说+背八股再说。如果想考公,那就直接备战考公。 但是但是就像我前面说的:你考公的理由可以是因为想追求稳定,想追求轻松。但唯独不能是因为觉得自己找不到工作。不能这么小瞧自己和自己的学历。
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务