Skip to content

Latest commit

 

History

History
 
 

Week2

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

学习笔记 滑动窗口最大数:

  • 思路:
  • 利用优先队列的思想,也就是堆
  • 1)定义一个优先队列,PriorityQueue heap = new PriorityQueue<>(((o1, o2) -> (o2-o1)));
  • 2)定义一个数组用来接收每组数中最大的那个值,由数学公式可知大小为length-k+1(length为数组长度,k为局部数组的大小)
  •  int[] result = new int[length-k+i];
    
  • 3)定义一个局部数组的队首标记start=i-k,start由于最开始局部数组的元素个数为0,start<0;当start >=0时数组里有k+1个数
  • 超出了局部数组的大小,这时就得将数组的第一个元素从优先队列里移除heap.remove(nums[start]);
  • 4)将数组元素放入堆中,heap.offer(nums[i]) 大顶堆
  • 5)当heap.size()==k时,将堆里面最大的那个元素放入result数组中result[i-k+1]=heap.peek();

前序遍历:

  • 思路:
  • 对于二叉树儿前序,中序,后序遍历。就是对根节点的访问次序不一样
  • 前序:根左右
  • 中序:左根右
  • 后序:左右根
  • 知道这个顺序后,利用递归的方法遍历每个节点