随笔分类 - oj记录
没事刷刷oj,总是会对自己有帮助的
摘要:Q:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 T: 分析二叉树的下一个节点,一共有以下情况: 1.二叉树为空,则返回空; 2.节点右孩子存在,则设置一个指针从该节点的右孩子出发,一直沿着指向左子结点的指针找
阅读全文
摘要:Q:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1 2 3 3 4 4 5 处理后为 1 2 5 A:题目并不难,重要的是, 可以在head前添加一个头结点 ,防止head被删的情况。 Q:给出一个排好序的链表,删除链表中的所有重复出现
阅读全文
摘要:Q:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 T:第一想法就是设置快慢两个指针。 1.思路:(感谢@却顾所来径) 设置快慢指针,都从链表头出发,快指针每次 走两步 ,慢指针一次 走一步 ,假如有环,一定相遇于环中某点(结论1)。接着让两个指针分别从相遇点和链表头出发
阅读全文
摘要:Q:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 输出描述:如果当前字符流没有存在出现一次的字符,返回 字符。 T: 1.用hash
阅读全文
摘要:Q:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2"," 123","3.1416"和" 1E 16"都表示数值。 但是"12e","1a3.14","1.2.3","+ 5"和"12e+4.3"都不是。 T: 1.分情况讨论( 实际上我觉得这样写有点
阅读全文
摘要:Q:请实现一个函数用来匹配包括'.'和'\ '的正则表达式。模式中的字符'.'表示任意一个字符,而'\ '表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab\ ac\ a"匹配,但是与"aa.a"和"ab\ a
阅读全文
摘要:Q:给定一个数组$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]$。不能使用除法。(注意:规定$B[0] = A[1] A[2] ... A[n 1]$,$B[n
阅读全文
摘要:Q:在一个长度为n的数组里的所有数字都在0到n 1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 T: 1.用hash。因为不
阅读全文
摘要:Q:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。 输入一个字符串,包括数字字母符号,可以为空。如果是合法的数值表达则返回该数字,否则返回0 示例1 输入 +2147483647 1a33 输出 2147483647 0 T: 注意一
阅读全文
摘要:Q:写一个函数,求两个整数之和,要求在函数体内不得使用+、 、 、/四则运算符号。 T: 1.使用进制。 两个数异或:相当于每一位相加,而不考虑进位; 两个数相与,并左移一位:相当于求得进位; 将上述两步的结果相加 首先看十进制是如何做的: 5+7=12,三步走 第一步:相加各位的值,不算进位,得到
阅读全文
摘要:Q:求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 A:(感谢@hustZa) 1.用递归 2.用pow函数 3.快速模乘方法转换 快速乘内容:https://www.cnblogs.com/xym486
阅读全文
摘要:Q:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑
阅读全文
摘要:Q:LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....
阅读全文
摘要:Q:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a stu
阅读全文
摘要:Q:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! T:
阅读全文
摘要:Q:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 T: 这个题承接上一个题目,使用双指针法。因为题目中有说,输出两个数乘积最小的,而设$S=2n,(n+k)(n k)=n^2 k^2 FindNumbersWithS
阅读全文
摘要:Q:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出
阅读全文
摘要:Q:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 T: 1.排序后一个一个对比。 2.使用hash。 Q:现在有一个整数类型的数组,数组中只有一个元素只出现一次,其余元素都出现三次。你需要找出只出现一次的元素 注意: 你需要给出一个线性时间复杂度的算法
阅读全文
摘要:Q:输入一棵二叉树,判断该二叉树是否是平衡二叉树。 A: 结合上一题的计算树的高度。 但这样做有一个问题,就是下层一直累积遍历很多次。这样直接在遍历过程中进行判断。
阅读全文
摘要:Q:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 A: 这是很典型的二叉树递归问题。 层次遍历方法:
阅读全文