dsadadss
s
class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
//边界判断,可以不写,因为已经给了范围
if(nums.length==0 || k>nums.length)
return new int[0];
//返回数组
int[] res = new int[nums.length-k+1];
//创建队列 队列的要求:1、首先存放的是下标 2、队列中存放的下标对应的值是递减的
linkedList queue = new linkedList<>();
//每次移动右指针
for(int rIdx = 0 ; rIdx=nums[queue.peekLast()]){
queue.removeLast();
}
queue.addLast(rIdx);
//求窗口左侧边界
int lIdx = rIdx-k+1;
//判断2 这是判断窗口长度的
if(queue.peekFirst()=k)
res[lIdx] = nums[queue.peekFirst()];
}
return res;
}
}
public class Codec {
// Encodes a tree to a single string.
public String serialize(TreeNode root) {
if(root == null) return "[]";
StringBuilder res = new StringBuilder("[");
//①:bfs
Queue queue = new linkedList<>() {{ add(root); }};
while(!queue.isEmpty()) {
TreeNode node = queue.poll();
if(node != null) {
res.append(node.val + ",");
queue.add(node.left);
queue.add(node.right);
}
else res.append("null,");
}
//②:dfs怎么写呢? dfs(root ,res); 想错了,我们要和反序列化取反,都要bfs,或者都dfs
res.deleteCharAt(res.length()-1); //去除最后的","号。
res.append("]");
return res.toString();
}
// private void dfs(TreeNode node , StringBuilder res){
// if(node == null){
// res.append("null,");
// return;
// }
// res.append(node.val).append(",");
// dfs(node.left,res);
// dfs(node.right,res);
// }
// Decodes your encoded data to tree.
public TreeNode deserialize(String data) {
//边界判断
if(data.equals("[]"))
return null;
//找出所有的数
String[] data_arr = data.substring(1,data.length()-1).split(",");
TreeNode root = new TreeNode(Integer.parseInt(data_arr[0])); //首节点
//放入队列中
Queue queue = new linkedList<>(){{add(root);}};
//这时候数组下标
int i=1;
while(!queue.isEmpty()){
TreeNode node = queue.poll();
if(!data_arr[i].equals("null")){
node.left = new TreeNode(Integer.parseInt(data_arr[i]));
queue.offer(node.left);
}
i++;
if(!data_arr[i].equals("null")){
node.right = new TreeNode(Integer.parseInt(data_arr[i]));
queue.offer(node.right);
}
i++;
}
return root;
}
}
// Your Codec object will be instantiated and called as such:
// Codec codec = new Codec();
// codec.deserialize(codec.serialize(root));



