剑指-32 从上到下打印二叉树 III
题目地址思路同上一题的思路,层序遍历+队列确认长度遍历相对上一题多了一个奇偶判断,选择左/右顺序输出,通过数组头插法或者尾插法就可以实现调整输出顺序/** * Definition for a binary tree node. * public class TreeNode { * int
题目地址思路同上一题的思路,层序遍历+队列确认长度遍历相对上一题多了一个奇偶判断,选择左/右顺序输出,通过数组头插法或者尾插法就可以实现调整输出顺序/** * Definition for a binary tree node. * public class TreeNode { * int
题目地址思路还是层序遍历,但是相对于上一题有所变化。每层的结果单独打印成一行需要记录每层的元素个数,或者可以记录上一行元素个数根据观察,队列每次处理一层的节点前,队列中保留的是该层的所有节点,因此可以在处理队列节点前,通过队列的长度获取上一层的元素节点数目/** * Definition for a
题目地址思路:属于二叉树的层序遍历二叉树常见遍历方式:前序遍历,中序遍历,后序遍历,层序遍历等层序遍历需要保证每层遍历的顺序性,每层节点的先后顺序。因此可以利用队列来保存每层节点的顺序性(这里需要记一下队列常用api,add,poll,peek)
思路1因为已经是排序的,只要直接遍历就可以了,找到第一个target后开始计数,统计有几个相同值class Solution { public int search(int[] nums, int target) { if (nums.length == 0) return 0;
思路字符串转为char数组(注意api是toCharArray)遍历数组,遇到空格' '转成%20追加到字符串中(' '占一位,%20占三位) public String replaceSpace(String s) { char[] chars = s.toCharArray();
思路一链表节点的定义包含三个属性,一个val一个next指针,一个random指针复制的时候每个节点需要重新new一个实例val和next指针比较简单,主要是random指针的处理,这里需要保存节点在整个链表中的相对位置。核心思路就是在处理复制原节点的时候,从map中获取random节点的相对位置(
思路1:通过递归到最后一个节点,然后依次修改原节点的next指针/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(
public int[] reversePrint(ListNode head) { // 注意边界值,数组初始化赋值为0 if (head == null) return new int[0]; int top = -1; int[] list = ne
解题思路:和一般栈的区别是需要记录栈存放的最小值,当栈元素更新的时候需要更新这个最小值一开始想到的是使用一个链表进行记录,但是这样的话需要将栈元素中存放的元素变为节点地址,然后维护节点的顺序(本质上可以实现,但是过于低效)2方法不可行的时候,需要注意到栈本身的特性,最后入栈的元素会先出栈,也就是说,
剑指-09解题思路:栈的特性的入栈在最下面,出栈元素在最上面,因此是先入后出队列的特性是FIFO,先入先出因为给了两个栈,因此可以通过栈1入栈作为队列的入口,栈2作为队列的删除口。栈2为空的时候,将栈1的元素依次出栈并依次入栈到2,这样的话栈2最上面的元素就会是整个抽象队列最开始添加的元素。当存入的