剑指offer
Fighting_Man
这个作者很懒,什么都没留下…
展开
-
第一个出现的字符
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。思路:首先需要想清楚,字符的种类是有限的,所以可以定义一个字符整形数组,初始化时将每个下标对应的值置位-1,当碰到一个字符时,一个字符时将这个字符作为数组下标,判断当前元素的值是否为-1...原创 2019-09-18 19:26:24 · 180 阅读 · 0 评论 -
链表中环的入口节点
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null思路一:使用HashMap或者HashSet,从头开始遍历链表,如果HashMap中不存在该节点,将该节点放入HashMap中,如果已经存在了,说明该节点一定是环的入口节点。public class Solution { public ListNode EntryNodeOfLoop(ListNode...原创 2019-09-18 23:28:11 · 133 阅读 · 0 评论 -
删除链表中重复的元素
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。思路:使用一个虚拟头节点(head)指向原来的头节点,p1 = head,p2 = head.next;根据p2.val == p2.next.val判断节点是否重复...原创 2019-09-20 09:21:28 · 465 阅读 · 0 评论 -
二叉树的下一个节点
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针思路:中序遍历的顺序是先访问左子节点再访问父亲节点再访问右子节点,而本题是为了获取中序遍历的下一个节点,所以必须需要考虑到右子节点的情况当该节点的右子节点不为空时,为了获取该节点的中序遍历的下一个节点,就必须去右子节点查找当右子节点存在左子树的时候,...原创 2019-09-21 16:30:23 · 140 阅读 · 0 评论 -
按之字形打印二叉树
题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路:两个栈,一个栈存储一层的节点,根据栈先进后出的特点,可以让每层打印的节点与放入的节点顺序相反。以此来达到每层“逆序”的特点。public ArrayList<ArrayList<Integer>> Print(T...原创 2019-09-25 19:00:49 · 151 阅读 · 0 评论