下面两份代码仅仅是Integer 改为了 int,为什么一个答案错误,一个正确
错误的答案
class Solution {
class MyQue {
Deque<Integer> deque = new LinkedList<>();
void offer(Integer val){ //此处参数类型 Integer
while(!deque.isEmpty()&& val>deque.getLast()){
deque.removeLast();
}
deque.offer(val);
}
void poll(Integer val){ //此处参数类型 Integer
if(!deque.isEmpty()&&val==deque.peek()){
deque.poll();
}
}
Integer peek() { //此处返回值类型 Integer
return deque.peek();
}
}
public int[] maxSlidingWindow(int[] nums, int k) {
if (nums.length == 1)
return nums;
MyQue myQue = new MyQue();
int len = nums.length - (k - 1);
int[] res = new int[len];
for (int i = 0; i < k; i++) {
myQue.offer(nums[i]);
}
int num = 0;
res[num++] = myQue.peek();
for (int i = k; i < nums.length; i++) {
myQue.poll(nums[i - k]);
myQue.offer(nums[i]);
res[num++] = myQue.peek();
}
return res;
}
}
正确的答案
class Solution {
class MyQue {
Deque<Integer> deque = new LinkedList<>();
void offer(int val){ //此处参数为int
while(!deque.isEmpty()&& val>deque.getLast()){
deque.removeLast();
}
deque.offer(val);
}
void poll(int val){ //此处参数为 int
if(!deque.isEmpty()&&val==deque.peek()){
deque.poll();
}
}
int peek() { //此处返回值类型为 int
return deque.peek();
}
}
public int[] maxSlidingWindow(int[] nums, int k) {
if (nums.length == 1)
return nums;
MyQue myQue = new MyQue();
int len = nums.length - (k - 1);
int[] res = new int[len];
for (int i = 0; i < k; i++) {
myQue.offer(nums[i]);
}
int num = 0;
res[num++] = myQue.peek();
for (int i = k; i < nums.length; i++) {
myQue.poll(nums[i - k]);
myQue.offer(nums[i]);
res[num++] = myQue.peek();
}
return res;
}
}