Skip to content

Commit 449a1b5

Browse files
committed
刷 leetcode
1 parent 0bb4e77 commit 449a1b5

File tree

12 files changed

+1321
-200
lines changed

12 files changed

+1321
-200
lines changed

codes/data-structure/src/test/java/io/github/dunwu/leetcode/list/LeetcodeListDemoTests.java

Lines changed: 0 additions & 190 deletions
This file was deleted.
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
package io.github.dunwu.leetcode;
2+
3+
import java.time.LocalDateTime;
4+
import java.time.ZoneOffset;
5+
import java.util.concurrent.TimeUnit;
6+
import java.util.concurrent.atomic.AtomicInteger;
7+
import java.util.concurrent.atomic.AtomicLong;
8+
9+
/**
10+
* @author <a href="mailto:forbreak@163.com">Zhang Peng</a>
11+
* @since 2020-05-13
12+
*/
13+
public class Parklot {
14+
15+
private volatile AtomicInteger space;
16+
private volatile AtomicLong sum;
17+
private volatile int MAX = 1000;
18+
19+
public boolean enter(Car car) {
20+
if (space.get() >= MAX) {
21+
// reject
22+
return false;
23+
}
24+
25+
// TODO 判断车类型
26+
27+
car.enter();
28+
space.getAndIncrement();
29+
return true;
30+
}
31+
32+
public long exit(Car car) {
33+
if (space.get() >= MAX) {
34+
// reject
35+
return 0L;
36+
}
37+
38+
// TODO 判断车类型
39+
car.exit();
40+
long money = car.money();
41+
// 扣费
42+
space.getAndDecrement();
43+
sum.getAndAdd(money);
44+
return money;
45+
}
46+
47+
public void getSum() {
48+
49+
}
50+
51+
public interface Parking {
52+
53+
enum Type {
54+
car,
55+
truck
56+
}
57+
58+
int getPrice();
59+
60+
int getMax();
61+
62+
void enter();
63+
64+
void exit();
65+
66+
LocalDateTime getBeginTime();
67+
68+
LocalDateTime getEndTime();
69+
70+
default long money() {
71+
if (getEndTime() == null) {
72+
return 0;
73+
}
74+
long l2 = getEndTime().toEpochSecond(ZoneOffset.UTC);
75+
long l1 = getBeginTime().toEpochSecond(ZoneOffset.UTC);
76+
long time = l2 - l1;
77+
long hours = TimeUnit.NANOSECONDS.toHours(time);
78+
long total = getPrice() * hours;
79+
return Math.min(total, getMax());
80+
}
81+
82+
}
83+
84+
public abstract class Car implements Parking {
85+
86+
private static final int price = 5;
87+
private static final int max = 60;
88+
private LocalDateTime beginTime;
89+
private LocalDateTime endTime;
90+
91+
@Override
92+
public int getPrice() {
93+
return price;
94+
}
95+
96+
@Override
97+
public int getMax() {
98+
return max;
99+
}
100+
101+
@Override
102+
public void enter() {
103+
beginTime = LocalDateTime.now();
104+
}
105+
106+
@Override
107+
public void exit() {
108+
endTime = LocalDateTime.now();
109+
}
110+
111+
@Override
112+
public LocalDateTime getBeginTime() {
113+
return beginTime;
114+
}
115+
116+
@Override
117+
public LocalDateTime getEndTime() {
118+
return endTime;
119+
}
120+
121+
}
122+
123+
public class LittleCar extends Car {
124+
125+
private static final int price = 5;
126+
private static final int max = 60;
127+
128+
@Override
129+
public int getPrice() {
130+
return price;
131+
}
132+
133+
@Override
134+
public int getMax() {
135+
return max;
136+
}
137+
138+
}
139+
140+
public class Truck extends Car implements Parking {
141+
142+
private static final int price = 10;
143+
private static final int max = 120;
144+
145+
@Override
146+
public int getPrice() {
147+
return price;
148+
}
149+
150+
@Override
151+
public int getMax() {
152+
return max;
153+
}
154+
155+
}
156+
157+
}

0 commit comments

Comments
 (0)