二维数组练习(Java)

一、杨辉三角(帕斯卡三角)

package Demo;
import java.util.Scanner;
public class YangHuiTriangle {   
    public static void main(String[] args) {
        int n;
        System.out.println("Enter a integer.");
        Scanner input1=new Scanner(System.in);
        n=input1.nextInt();
        YangHuiTriangle tri=new YangHuiTriangle();
        tri.triangle(n);
    }
    public void triangle(int n){
        int triangle[][]=new int[n][];//创建二维数组
        for(int i=0;i<triangle.length;i++){//遍历二维数组的第1层
            triangle[i]=new int[i+1];//初始化第2层数组的大小
            for(int j=0;j<triangle[i].length;j++){//遍历第2层数组
                if(i==0||j==0||j==triangle[i].length-1)//两侧的数组元素赋值为1
                    triangle[i][j]=1;
                else//其他数值通过公式计算
                    triangle[i][j]=triangle[i-1][j]+triangle[i-1][j-1];            
                System.out.print(triangle[i][j]+"\t");//输出数组元素
            }
            System.out.println();
        }       
    }
}

运行结果

Enter a integer.
6
1	
1	1	
1	2	1	
1	3	3	1	
1	4	6	4	1	
1	5	10	10	5	1	

二、Arrays类常用方法

package Demo;
import java.util.Arrays;
public class ArraysDemo {
    public static void main(String[] args) {
        Integer[] arrayTest={6, 1, 9, 2, 5, 7, 6, 8, 6, 12};
        Integer arr[]={1, 2, 3, 4, 5, 6};
        
        //查找数组中数据3的下标
        int binarySearch=Arrays.binarySearch(arr, 3);
        System.out.println(binarySearch);
        //在指定范围内查找数据3的下标
        int binarySearch0=Arrays.binarySearch(arr, 0, 3, 3);
        System.out.println(binarySearch);
        
        //复制新的数组,复制长度为5
        Integer[] copyArray1=Arrays.copyOf(arrayTest, 5);
        arrayPrint(copyArray1);
        //复制指定下标范围内的值,含头不含尾
        Integer[] copyArray2=Arrays.copyOfRange(arrayTest, 2, 7);
        arrayPrint(copyArray2);
        
        //在指定下标内,对数组进制默认升序排序,这将改变原数组,下标含头不含尾
        Integer[] sortArray1=Arrays.copyOf(arrayTest, arrayTest.length);
        Arrays.sort(sortArray1, 0, 5);
        arrayPrint(sortArray1);
        
        //比较一维数组的内容是否相等
        Integer[] arrayTest1=Arrays.copyOf(arrayTest, arrayTest.length);
        System.out.println(Arrays.equals(arrayTest1, arrayTest));
        
        //为数组填充元素
        Integer[] fillArr=new Integer[5];
        Arrays.fill(fillArr, 6);
        arrayPrint(fillArr);
    }
    public static void arrayPrint(Object[] oArray){
        System.out.println(Arrays.toString(oArray));
    }
}

运行结果

2
2
[6, 1, 9, 2, 5]
[9, 2, 5, 7, 6]
[1, 2, 5, 6, 9, 7, 6, 8, 6, 12]
true
[6, 6, 6, 6, 6]

小收获:

  • 之前一直以为二维数组每一行的元素个数是相同的,今天才发现原来也可以不同
  • Java的数组可以动态初始化,这是优于C++数组的地方
上一篇:【LeetCode】6.Array and String — Pascal's Triangle 杨辉三角


下一篇:LeetCode 120. Triangle