注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
/*OOD停车场,当时没做出来;回家自己写了一下,分享给大家!欢迎来“喷(分享)“。
为了便于理解,我就用个example的input/output来表达。希望能帮到大家。
Problem:
Design a 停车场 system。
Example:
input [1,1,1] - 停车场 小/中/大 型车 车位数。
input ["come","mini","leave","mini","come","big","come","big"] - 来了一个小车,走了一个小车,来了一个大车,又来了一个大车。
output ["1","2","no slot"] - 打印小票:小车来给小票1,大车来给小票2,又来大车没位置了给小票no slot。
My Solution:
1 HashMap<String, Integer> to carry the parking capacity.
1 HashMap<String, Integer> to track the parking status.
*/
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class parkingsystem {
public static List<String> ticket(int[] parkingLot, String[][] cars) {
HashMap<String, Integer> capacity = new HashMap<>(); // carry the parking max capacity
capacity.put("mini", parkingLot[0]);
capacity.put("med", parkingLot[1]);
capacity.put("big", parkingLot[2]);
List<String> ans = new ArrayList<>();
int ticket = 0;
HashMap<String, Integer> tracking = new HashMap<>(); // tracking the parking status
for (String[] str : cars) {
if (str[0] .equals("come")) {
int cnt = tracking.getOrDefault(str[1], 0);
if (cnt >= capacity.get(str[1])) {
ans.add("no slot"); // 停车没位置了打印小票 no slot...
} else {
tracking.put(str[1], cnt + 1);
ans.add(String.valueOf(++ticket)); // 停车成功打印小票 1,2,3...
}
} else { // 车离场,不打印小票,停车位tracking相应-1
int cnt = tracking.get(str[1]);
tracking.put(str[1], cnt - 1);
}
}
return ans;
}
public static void main(String[] args) {
int[] parkingLot = {1,1,1};
String[][] cars = {
{"come","mini"},
{"leave","mini"},
{"come","big"},
{"come","big"}
};
System.out.println(ticket(parkingLot, cars));
// 输出: [1, 2, no slot]
// 小车来给小票1,大车来给小票2,又来大车没位置了给小票no slot
}
}
|