目录这个专栏 我将分享每日做的算法题的解题思路 秋招加油!
这是第十四天 !!
- 041 滑动窗口的平均值
- 042 最近请求次数
- 043 往完全二叉树添加节点
题目
AC代码
class MovingAverage {
int size;
int length;
Queue queue;
int sum = 0;
public MovingAverage(int size) {
this.size = size;
this.length = 0;
this.sum = 0;
this.queue = new ArrayDeque<>();
}
public double next(int val) {
queue.add(val);
sum += val;
length++;
if(length > size){
sum -= queue.poll();
length--;
}
return sum*1.0/length;
}
}
042 最近请求次数添加元素后判断一下是否超出了窗口大小,如果超出了就移除队列第一个元素,最后计算品均值即可。
题目
AC代码
class RecentCounter {
Queue queue;
public RecentCounter() {
queue = new ArrayDeque<>();
}
public int ping(int t) {
queue.offer(t);
while(queue.peek()
queue.poll();
}
return queue.size();
}
}
043 往完全二叉树添加节点队列实现即可
题目
AC代码
class CBTInserter {
TreeNode root;
public CBTInserter(TreeNode root) {
this.root = root;
}
//如果当前结点的左结点为空或者右结点为空,就将新结点接上,并返回当前结点的值
//否则将当前结点的左右结点依次入队列,继续while循环
public int insert(int v) {
Queue queue = new LinkedList();
TreeNode newNode = new TreeNode(v);
queue.add(root);
while(!queue.isEmpty()){
TreeNode node = queue.poll();
if(node.left == null){
node.left = newNode;
}else if(node.right == null){
node.right = newNode;
}else{
queue.add(node.left);
queue.add(node.right);
continue;
}
return node.val;
}
return -1;
}
public TreeNode get_root() {
return root;
}
}
胜利贵在坚持,要取得胜利就要坚持不懈地努力,饱尝了许多次的失败之后才能成功,即所谓的失败乃成功之母,成功也就是胜利的标志,也可以这样说,坚持就是胜利。



