
剑指Offer
Mutou_ren
这个作者很懒,什么都没留下…
展开
-
剑指Offer刷题Java版——两个栈实现队列
题目用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解题思路两个栈一个用来压入,一个用来弹出。需要弹出的时候就把压入栈里的元素搞到弹出栈中即可。很简单的题,没啥可说的解题代码public class TwoStack { //用来push Stack<Integer> stack1 = new Stack<Inte...原创 2020-02-08 14:53:44 · 177 阅读 · 0 评论 -
剑指Offer刷题Java版——字符流中第一个不重复的字符
题目请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。如果当前字符流没有存在出现一次的字符,返回#字符。解题思路又是找重复,凡是遇到找重复找不重复的,桶计数都是个好方法,本题针对的是字符,而字符转为整数最大不超过127(一些扩...原创 2020-01-28 23:22:04 · 191 阅读 · 0 评论 -
剑指Offer刷题Java版——替换空格
题目请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路第一反应是replace对不对?API大家都会用,但是replace的底层是遍历查找,然后添加,由于要替换的字符数大于原字符数,因此会导致后面的字符进行复制移动,因此除了最后一个是空格的情况下,有几个空格就要遍历几次,...原创 2020-01-28 21:14:27 · 211 阅读 · 0 评论 -
剑指Offer刷题Java版——构建乘积数组
题目给定一个数组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]。不能使用除法。解题思路引用的牛客网的答案既然不能用乘法,分析题目,我们可以将乘积拆为两项。即:C[i] = A[0] * A[1] *...*A[i-1]D[i] = A[i + 1] *...* A[n-1]B[i]...原创 2020-01-28 18:03:11 · 159 阅读 · 0 评论 -
剑指Offer刷题Java版——数组中重复的数字
题目在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。解题思路思路1——桶计数判断有重,第一反应就是桶计数的方法,也就是bitmap的思想,对于数字n,让数组array[n]+...原创 2020-01-28 17:18:15 · 247 阅读 · 0 评论