Skip to content

Commit 82bcc44

Browse files
LineCutFengfenghongxiang
authored andcommitted
[Feature]提交若干题目
Signed-off-by: fenghongxiang <fenghongxiang@xiaomi.com>
1 parent 4e3058d commit 82bcc44

File tree

5 files changed

+98
-107
lines changed

5 files changed

+98
-107
lines changed

leetcode4java/src/main/java/Problem_0226/_翻转二叉树/Description.md

Lines changed: 0 additions & 26 deletions
This file was deleted.

leetcode4java/src/main/java/Problem_0226/_翻转二叉树/Solution.java

Lines changed: 0 additions & 49 deletions
This file was deleted.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
5731. 座位预约管理系统 显示英文描述
2+
通过的用户数363
3+
尝试过的用户数422
4+
用户总通过次数363
5+
用户总提交次数449
6+
题目难度Medium
7+
请你设计一个管理 n 个座位预约的系统,座位编号从 1 到 n 。
8+
9+
请你实现 SeatManager 类:
10+
11+
SeatManager(int n) 初始化一个 SeatManager 对象,它管理从 1 到 n 编号的 n 个座位。所有座位初始都是可预约的。
12+
int reserve() 返回可以预约座位的 最小编号 ,此座位变为不可预约。
13+
void unreserve(int seatNumber) 将给定编号 seatNumber 对应的座位变成可以预约。
14+
15+
16+
示例 1:
17+
18+
输入:
19+
["SeatManager", "reserve", "reserve", "unreserve", "reserve", "reserve", "reserve", "reserve", "unreserve"]
20+
[[5], [], [], [2], [], [], [], [], [5]]
21+
输出:
22+
[null, 1, 2, null, 2, 3, 4, 5, null]
23+
24+
解释:
25+
SeatManager seatManager = new SeatManager(5); // 初始化 SeatManager ,有 5 个座位。
26+
seatManager.reserve(); // 所有座位都可以预约,所以返回最小编号的座位,也就是 1 。
27+
seatManager.reserve(); // 可以预约的座位为 [2,3,4,5] ,返回最小编号的座位,也就是 2 。
28+
seatManager.unreserve(2); // 将座位 2 变为可以预约,现在可预约的座位为 [2,3,4,5]
29+
seatManager.reserve(); // 可以预约的座位为 [2,3,4,5] ,返回最小编号的座位,也就是 2 。
30+
seatManager.reserve(); // 可以预约的座位为 [3,4,5] ,返回最小编号的座位,也就是 3 。
31+
seatManager.reserve(); // 可以预约的座位为 [4,5] ,返回最小编号的座位,也就是 4 。
32+
seatManager.reserve(); // 唯一可以预约的是座位 5 ,所以返回 5 。
33+
seatManager.unreserve(5); // 将座位 5 变为可以预约,现在可预约的座位为 [5]
34+
35+
36+
提示:
37+
38+
1 <= n <= 105
39+
1 <= seatNumber <= n
40+
每一次对 reserve 的调用,题目保证至少存在一个可以预约的座位。
41+
每一次对 unreserve 的调用,题目保证 seatNumber 在调用函数前都是被预约状态。
42+
对 reserve 和 unreserve 的调用 总共 不超过 105 次。
Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,42 @@
11
package test.sort;
22

33
public class MergeSort {
4-
public int[] sort(int[] a,int low,int high){
5-
int mid = (low+high)/2;
6-
if(low<high){
7-
sort(a,low,mid);
8-
sort(a,mid+1,high);
4+
public int[] sort(int[] a, int low, int high) {
5+
int mid = (low + high) / 2;
6+
if (low < high) {
7+
sort(a, low, mid);
8+
sort(a, mid + 1, high);
99
//左右归并
10-
merge(a,low,mid,high);
10+
merge(a, low, mid, high);
1111
}
1212
return a;
1313
}
1414

1515
public void merge(int[] a, int low, int mid, int high) {
16-
int[] temp = new int[high-low+1];
17-
int i= low;
18-
int j = mid+1;
19-
int k=0;
16+
17+
int[] temp = new int[high - low + 1];
18+
int i = low;
19+
int j = mid + 1;
20+
int k = 0;
21+
2022
// 把较小的数先移到新数组中
21-
while(i<=mid && j<=high){
22-
if(a[i]<a[j]) temp[k++] = a[i++];
23-
else temp[k++] = a[j++];
23+
while (i <= mid && j <= high) {
24+
if (a[i] < a[j])
25+
temp[k++] = a[i++];
26+
else
27+
temp[k++] = a[j++];
2428
}
29+
2530
// 把左边剩余的数移入数组
26-
while(i<=mid) temp[k++] = a[i++];
31+
while (i <= mid)
32+
temp[k++] = a[i++];
33+
2734
// 把右边边剩余的数移入数组
28-
while(j<=high) temp[k++] = a[j++];
35+
while (j <= high)
36+
temp[k++] = a[j++];
37+
2938
// 把新数组中的数覆盖nums数组
30-
for(int x=0;x<temp.length;x++) a[x+low] = temp[x];
39+
for (int x = 0; x < temp.length; x++)
40+
a[x + low] = temp[x];
3141
}
3242
}

leetcode4java/src/main/java/test/sort/QuickSort.java

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,38 @@ public void quickSort(int[] nums) {
77
}
88

99
private void sort(int[] nums, int left, int right) {
10-
if (left > right) return;
11-
int base = nums[left];
12-
int i = left, j = right;
13-
while (i < j) {
14-
while (nums[j] >= base && i < j) j--;
15-
while (nums[i] <= base && i < j) i++;
16-
if (i < j) {
17-
int tmp = nums[i];
18-
nums[i] = nums[j];
19-
nums[j] = tmp;
10+
if (left < right) {
11+
int i = left;
12+
int j = right;
13+
int base = nums[left];
14+
while (i < j) {
15+
while (i < j && nums[j] >= base) {
16+
j--;
17+
}
18+
if (i < j) {
19+
nums[i++] = nums[j];
20+
}
21+
while (i < j && nums[i] <= base) {
22+
i++;
23+
}
24+
if (i < j) {
25+
nums[j--] = nums[i];
26+
}
2027
}
28+
nums[i] = base;
29+
sort(nums, left, i - 1);
30+
sort(nums, i + 1, right);
2131
}
32+
}
33+
}
2234

23-
//将基数放到中间位置(基数归位)
24-
nums[left] = nums[i];
25-
nums[i] = base;
26-
27-
sort(nums, left, i - 1);
28-
sort(nums, j + 1, right);
35+
class Test {
36+
public static void main(String[] args) {
37+
QuickSort quickSort = new QuickSort();
38+
int[] nums = {
39+
0,1,0,1,0,1,0,1,1,0,0,1,1,0,1,0,1
40+
};
41+
quickSort.quickSort(nums);
42+
System.out.println(nums);
2943
}
3044
}

0 commit comments

Comments
 (0)