随笔分类 -  剑指offer

摘要:题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 思路:基于按层遍历,增加一个flag标记,如果是偶数层就置逆以后再输出 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二 阅读全文
posted @ 2018-02-04 11:24 jeysin 阅读(119) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路:分多种情况讨论 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针 阅读全文
posted @ 2018-02-04 11:03 jeysin 阅读(217) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。 思路:中序遍历 给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三 阅读全文
posted @ 2018-02-03 23:07 jeysin 阅读(112) 评论(0) 推荐(0) 编辑
摘要:题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任 阅读全文
posted @ 2018-02-03 22:41 jeysin 阅读(100) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4] 阅读全文
posted @ 2018-02-02 13:37 jeysin 阅读(155) 评论(0) 推荐(0) 编辑
摘要:题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行 思路:维护两个指针:last和nlast,其中,last始终指向当前打印行的最后一个节点,nlast始终指向队列中最后一个节点 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行 思路:维护两个指针:last和nl 阅读全文
posted @ 2018-02-02 12:45 jeysin 阅读(174) 评论(0) 推荐(0) 编辑
摘要:题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 输出描述: 如果当前字符流没有存在出现一次的字符,返回#字符思路:一个数组记 阅读全文
posted @ 2018-02-02 12:33 jeysin 阅读(107) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法 思路:不能使用除法,则根据A由上至下、由下至上连乘 给定一个数组A[0,1,...,n- 阅读全文
posted @ 2018-02-02 12:14 jeysin 阅读(141) 评论(0) 推荐(0) 编辑
摘要:题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 思路:通过交换使所有数 阅读全文
posted @ 2018-02-02 10:18 jeysin 阅读(125) 评论(0) 推荐(0) 编辑
摘要:题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数值表达则返回该数字,否则返回0思路:多考虑特殊情况 将一个字符串转换成一个整数,要求不能使用字符 阅读全文
posted @ 2018-02-02 09:54 jeysin 阅读(139) 评论(0) 推荐(0) 编辑
摘要:题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 思路:利用“异或”和“与”操作模拟加法和进位操作 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 思路:利用“异或”和“与”操作模拟加法和进位操作 阅读全文
posted @ 2018-02-01 15:26 jeysin 阅读(78) 评论(0) 推荐(0) 编辑
摘要:题目描述 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 思路: 1、利用构造函数,定义静态变量 1 class Add 2 { 3 public: 4 Add() 5 { 6 ++n; 7 sum=su 阅读全文
posted @ 2018-02-01 14:11 jeysin 阅读(211) 评论(0) 推荐(0) 编辑
摘要:题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.. 阅读全文
posted @ 2018-02-01 12:32 jeysin 阅读(134) 评论(0) 推荐(0) 编辑
摘要:题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a 阅读全文
posted @ 2018-02-01 12:18 jeysin 阅读(94) 评论(0) 推荐(0) 编辑
摘要:题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! 阅读全文
posted @ 2018-02-01 11:56 jeysin 阅读(84) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。思路:两个指针,分别从前往后,从后往前查找,时间复杂度为O(n) 输入一个递增排序的数组和一个数字S,在数 阅读全文
posted @ 2018-02-01 11:48 jeysin 阅读(107) 评论(0) 推荐(0) 编辑
摘要:题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快 阅读全文
posted @ 2018-01-31 21:06 jeysin 阅读(194) 评论(0) 推荐(0) 编辑
摘要:题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 思路:将数字分成两组,每组包含一个只出现一次的数字,再异或求解,时间复杂度为O(logn),空间复杂度为O(1) 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一 阅读全文
posted @ 2018-01-31 20:32 jeysin 阅读(135) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 思路:基于后序遍历,边遍历边判断,时间复杂度为O(n) 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 思路:基于后序遍历,边遍历边判断,时间复杂度为O(n) 阅读全文
posted @ 2018-01-31 17:23 jeysin 阅读(147) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 思路:基于深度优先遍历求二叉树深度 1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 str 阅读全文
posted @ 2018-01-31 17:06 jeysin 阅读(95) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示