Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

设计有序流

题目

lettcode-1656题
难度:简单This is a picture without description

解题思路

既然是一个有序流,那么我们就可以将其存储到一个数组中,然后通过数组下标对所在的值进行访问。所以我们首先创建一个长度为n+1的数组,将value的值存在其中。
将下标指针的值设置为1,然后在执行时进行循环加1

接下来就是循环读取的过程:
当我们在数组中插入一个数据的时候,就判断一个数组下标是否小于n,以及当前下标处的value值是否不为空,如果不为空我们就进入循环,将其存到一个新的集合中,并将其输出。
如果为空的时候就不执行方法,继续往数组中添加value
直到下标不小于n为止

具体代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class OrderedStream {

private String[] arr;
private int n;
private int ptr;

// 构造函数
public OrderedStream(int n) {
//因为数组的下标n从0开始,所以数组的长度为n+1
this.arr=new String[n+1];
this.n=n;
this.ptr=1;
}

public List<String> insert(int idKey, String value) {
//将value存到数组中
arr[idKey]=value;

//创建一个新的数组
List<String> res=new ArrayList<>();
//循环读取arr数组,将其中的值写到res数组中
//当arr[]为null时,不进入循环
while (ptr<=n&&arr[ptr]!=null){
res.add(arr[ptr]);
ptr++;
}
return res;
}
}