题目链接:https://leetcode-cn.com/problems/where-will-the-ball-fall/

前言:很久没写过java代码了,每次刷题都要看很多博客查基础的函数,希望尽快掌握这些。

一. java学习

1.数组定义方式

/*长度为n的一维数组*/
int[] a = new int[n];
/*已知的二维数组*/
int[][] grid = new int[][]{{1,1,-1,-1,1},{1,1,1,1,-1}};

2.获取二维数组行列数

int m = grid.length;
int n = grid[0].length;

3.输出数组

/*a为一维数组*/
for(int b:a)
    System.out.println(b);

4.填充一维数组

Arrays.fill ( ans, -1 )

 

二. 题解思路

从左到右,依次判断每个球的最终位置。

对于每一个球,从上至下判断球位置的移动方向。若挡板向右偏,则球会往右移动;若挡板往左偏,则球会往左移动。若移动过程中碰到侧边或者V 形,则球会卡住(输出-1)。如果可以完成本层的移动,则继续判断下一层的移动方向,直到落出箱子或者卡住。

比较特殊的样例是只有一块挡板或只有一行箱子时,可以有效检测代码的边界判断是否有问题。

三. 心得

代码写了一上午,改了又改,思路其实是很容易想到的,但判断侧边和V形时代码写得比较繁琐,导致了多个if顺序上的问题。为保持代码的简洁性,还需要更多的练习。

posted on 2022-02-24 12:24  SelmaS  阅读(25)  评论(0编辑  收藏  举报