随笔分类 -  剑指offer及平常

摘要:题目链接: 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 解题思路: 这道题目和二叉树打印成多行那个题目很像,所以代码也差不多啦! 阅读全文
posted @ 2019-05-21 20:18 王爷爱吃秋刀鱼 阅读(108) 评论(0) 推荐(0)
摘要:题目链接:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任 阅读全文
posted @ 2019-05-21 20:04 王爷爱吃秋刀鱼 阅读(214) 评论(0) 推荐(0)
摘要:题目链接:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这 阅读全文
posted @ 2019-05-20 21:40 王爷爱吃秋刀鱼 阅读(172) 评论(0) 推荐(0)
摘要:题目链接:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+ 阅读全文
posted @ 2019-05-20 21:15 王爷爱吃秋刀鱼 阅读(177) 评论(0) 推荐(0)
摘要:题目链接:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 解题思路: //左神讲的 //先说个定理:两个指针一个fast、一个slow同时从一个链表的头部出发 //fast一次走2步,slow一次走一步,如果该链表有环,两个指针必然在环内相遇 //此时只需要把其中的一个指 阅读全文
posted @ 2019-05-20 20:26 王爷爱吃秋刀鱼 阅读(470) 评论(0) 推荐(0)
摘要:题目链接: 无序数组array, 找到数组中两个数的最大差值, 且大数出现在小数之后,如:arr[i]-arr[j], 且 i<j。比如: array 是 [2, 3, 10, 6, 4, 8, 1],最大差值是8(10-2) 解题思路: 记录当前访问过的数组中的最小值 min_val; 2) 当前 阅读全文
posted @ 2019-05-20 20:10 王爷爱吃秋刀鱼 阅读(1533) 评论(0) 推荐(0)
摘要:题目链接:给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。 解题思路: 这其实是二叉搜索树的中序遍历。 阅读全文
posted @ 2019-05-17 10:20 王爷爱吃秋刀鱼 阅读(280) 评论(0) 推荐(0)
摘要:题目链接:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 解题思路: 之字形用栈!! 阅读全文
posted @ 2019-05-17 10:07 王爷爱吃秋刀鱼 阅读(166) 评论(0) 推荐(0)
摘要:题目链接:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 解题思路: /** * 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 * 思路: * 按层次输出二叉树 * 访问根节点,并将根节点入队。 * 当队列不空的时候,重复以下操作。 * 1、弹出一个元素。作为当 阅读全文
posted @ 2019-05-17 10:01 王爷爱吃秋刀鱼 阅读(152) 评论(0) 推荐(0)
摘要:题目链接:操作给定的二叉树,将其变换为源二叉树的镜像。 解题思路: 递归操作 阅读全文
posted @ 2019-05-17 09:55 王爷爱吃秋刀鱼 阅读(160) 评论(0) 推荐(0)
摘要:题目链接:从上往下打印出二叉树的每个节点,同层节点从左至右打印。 解题思路: 从上而下是用队列。 阅读全文
posted @ 2019-05-17 09:53 王爷爱吃秋刀鱼 阅读(139) 评论(0) 推荐(0)
摘要:题目链接:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 解题思路: 用栈来存储。 阅读全文
posted @ 2019-05-17 09:51 王爷爱吃秋刀鱼 阅读(133) 评论(0) 推荐(0)
摘要:题目链接:LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.. 阅读全文
posted @ 2019-05-16 21:27 王爷爱吃秋刀鱼 阅读(116) 评论(0) 推荐(0)
摘要:题目链接:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a 阅读全文
posted @ 2019-05-16 21:21 王爷爱吃秋刀鱼 阅读(145) 评论(0) 推荐(0)
摘要:题目链接:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! 阅读全文
posted @ 2019-05-16 21:06 王爷爱吃秋刀鱼 阅读(181) 评论(0) 推荐(0)
摘要:题目链接:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 解题思路: 1. 首先添加一个头节点,以方便碰到第一个,第二个节点就相同的情况 2.设置 pre ,last 指针, 阅读全文
posted @ 2019-05-16 20:56 王爷爱吃秋刀鱼 阅读(159) 评论(0) 推荐(0)
摘要:题目链接:输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 解题思路: 路径问题一般用回溯法+递归偏多,当这条路径到底如果还没发现,就删除最后一个 阅读全文
posted @ 2019-05-16 20:28 王爷爱吃秋刀鱼 阅读(148) 评论(0) 推荐(0)
摘要:题目链接:统计一个数字在排序数组中出现的次数。 解题思路: 由于数组有序,所以使用二分查找方法定位k的第一次出现位置和最后一次出现位置 这里有一个大坑:&&这个符号非常坑爹,&&的短路功能,当第一个表达式的值为false的时候,则不再计算第二个表达式;所以总是提示数组越界就是在这里!!!!。 阅读全文
posted @ 2019-05-16 10:12 王爷爱吃秋刀鱼 阅读(326) 评论(0) 推荐(0)
摘要:题目链接:输入两个链表,找出它们的第一个公共结点。 解题思路: 找出2个链表的长度,然后让长的先走两个链表的长度差,然后再一起走(因为2个链表用公共的尾部) 1 /* 2 public class ListNode { 3 int val; 4 ListNode next = null; 5 6 L 阅读全文
posted @ 2019-05-15 22:39 王爷爱吃秋刀鱼 阅读(164) 评论(0) 推荐(0)
摘要:题目链接: 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 示例1 解题思路: 阅读全文
posted @ 2019-05-15 22:26 王爷爱吃秋刀鱼 阅读(171) 评论(0) 推荐(0)