public boolean parkVehicle(Vehicle vehicle) { if (availableSpots() < vehicle.getSpotsNeeded()) { return false; } int spotNumber = findAvailableSpots(vehicle); if (spotNumber < 0) { return false; } return parkStartingAtSpot(spotNumber, vehicle); }
private int findAvailableSpots(Vehicle vehicle) { int spotsNeeded = vehicle.getSpotsNeeded(); int lastRow = -1; int spotsFound = 0; for (int i = 0; i < spots.length; i++) { ParkingSpot spot = spots[i]; if (lastRow != spot.getRow()) { spotsFound = 0; lastRow = spot.getRow(); } if (spot.canFitVehicle(vehicle)) { spotsFound++; } else { spotsFound = 0; } if (spotsFound == spotsNeeded) { return i - (spotsNeeded - 1); } } return -1; }