博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试总结之 迷宫型类题
阅读量:6310 次
发布时间:2019-06-22

本文共 2197 字,大约阅读时间需要 7 分钟。

 
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字 例如:如果输入如下矩阵: 1              2              3              4 5              6              7              8 9              10             11             12 13             14             15             16 则依次打印出数字1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10

这道题我在google,onsite的时候遇到了, 当时纠结了好久,因为不知道如何让object去变化的移动.这是考点1. switch + recursion 

考点2是 如何证明你的想法是正确的,其实就是switch出来按顺序1,2,3,4,5   a[i]=k  k++. 就可以了.

public class Car {  private int x=0;  private int y=-1;  Direction direction = Direction.E;  private int[][] arr ;   //最小边界是变化的.  private int minX=-1;    private int minY=-1;  private int maxX;  private int maxY;    public Car(int[][] arr){       maxX = arr.length;       maxY = arr[0].length;       this.arr=arr;  }  public void move(){      if(maxX==minX&&maxY==minY){          return;      }            switch(direction){           case N:              if(x-1<=minX){                  minY++;                  direction=Direction.E;              }else{                  x--;                  System.out.print(arr[x][y]+" ");              }              break;          case E:              if(y+1>=maxY){                  minX++;                  direction=Direction.S;              }else{                  y++;                   System.out.print(arr[x][y]+" ");              }              break;          case S:              if(x+1>=maxX){                  maxY--;                  direction=Direction.W;              }else{                  x++ ;                  System.out.print(arr[x][y]+" ");              }             break;          case W:              if(y-1<=minY){                  maxX--;                  direction=Direction.N;              }else{                  y--;                  System.out.print(arr[x][y]+" ");              }             break;      }      move();  }  public static void main(String[] args) {      int[][] arr = new int[4][4];      int k=1;       //验证部分.      for(int i=0;i<4;i++){          for(int j=0;j<4;j++){              arr[i][j]=k;              k++;          }      }      //执行部分    Car c = new Car(arr);    c.move();}  enum Direction {    N,E,S,W; }}

 

转载于:https://www.cnblogs.com/leetcode/p/3199774.html

你可能感兴趣的文章
[转] Entity Framework Query Samples for PostgreSQL
查看>>
XDUOJ 1115
查看>>
PHP学习(四)---PHP与数据库MySql
查看>>
模版方法模式--实现的capp流程创建与管理
查看>>
软件需求分析的重要性
查看>>
eclipse的scala环境搭建
查看>>
UVA465:Overflow
查看>>
HTML5-placeholder属性
查看>>
Android选择本地图片过大程序停止的经历
查看>>
poj 2187:Beauty Contest(旋转卡壳)
查看>>
《Flask Web开发》里的坑
查看>>
Python-库安装
查看>>
Git笔记
查看>>
普通人如何从平庸到优秀,在到卓越
查看>>
SLAM数据集
查看>>
c#学习笔记05——数组&集合
查看>>
【图论算法】Dijstra&BFS
查看>>
注册和上传文件(头像)
查看>>
使用OVS
查看>>
键盘回收的几种方法
查看>>