剑指offer刷题记录
呆瓜瓜瓜瓜
这个作者很懒,什么都没留下…
展开
-
《剑指offer》练习-面试题20-表示数值的字符串
题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。思路1(枚举法):表示数值的字符串遵循模式A[.[原创 2018-06-29 22:14:21 · 198 阅读 · 0 评论 -
《剑指offer》练习-面试题65-不用加减乘除做加法
题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。package offer;public class Solution65 { public int Add(int num1, int num2) { int sum, carry; do { sum = num1 ^ num2; carry = (num1 & nu...原创 2018-08-06 11:26:45 · 119 阅读 · 0 评论 -
《剑指offer》练习-面试题66-构建乘积数组
题目:给定一个数组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]。不能使用除法。链接:https://www.nowcoder.com/questionTerminal/94a4d381a68b47b7a8bed86f2975db46package offe...原创 2018-08-06 11:02:40 · 189 阅读 · 0 评论 -
《剑指offer》练习-面试题61-扑克牌顺子
题目:LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为1...原创 2018-08-05 20:07:38 · 197 阅读 · 0 评论 -
《剑指offer》练习-面试题59-滑动窗口的最大值
题目:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{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],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,...原创 2018-08-05 17:45:24 · 226 阅读 · 0 评论 -
《剑指offer》练习-面试题?-数字在排序数组中出现的次数
题目:统计一个数字在排序数组中出现的次数。思路一:简单暴力的解法一。。。package offer;public class Solution999 { public int GetNumberOfK(int[] array, int k) { int count = 0; for (int i = 0; i < array.length; i++) { i...原创 2018-07-31 22:00:10 · 103 阅读 · 0 评论 -
《剑指offer》练习-面试题33-二叉搜索树的后序遍历序列
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。package offer;public class Solution33 { public boolean VerifySquenceOfBST(int[] sequence) { if(sequence==null||sequenc...原创 2018-07-27 22:47:25 · 159 阅读 · 0 评论 -
《剑指offer》练习-面试题11-旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路:①左值为数组第一个元素,右值为数组第二个元素。②左值大于等于右值,中值=(左值地址+右值地址)/2,分3...原创 2018-04-19 21:46:21 · 113 阅读 · 0 评论 -
《剑指offer》练习-面试题58-左旋转字符串
题目:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!链接:https://www.nowcoder.com/questionTerminal/12d...原创 2018-08-04 23:40:42 · 146 阅读 · 0 评论 -
《剑指offer》练习-面试题56-数组中只出现一次的数字
题目:一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。链接:https://www.nowcoder.com/questionTerminal/e02fdb54d7524710a7d664d082bb7811思路:若数组中只有一个只出现了一次的数,那么对这个数组的所有数依次异或,最后得到的结果是这个落单的数。若数组中有两个只出现了一次的数...原创 2018-08-04 21:51:58 · 145 阅读 · 0 评论 -
《剑指offer》练习-面试题9-用两个栈实现队列
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。链接:https://www.nowcoder.com/questionTerminal/54275ddae22f475981afa2244dd448c6思路:stack1负责添加元素,将stack1中添加的元素压入stack2,stack2负责弹出元素。在弹出元素的时候,考虑①stack...原创 2018-04-17 22:09:44 · 81 阅读 · 0 评论 -
《剑指offer》练习-面试题36-二叉搜索树与双向链表
题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。链接:https://www.nowcoder.com/questionTerminal/947f6eb80d944a84850b0538bf0ec3a5package offer;public class Solution36 { TreeNode head...原创 2018-07-30 20:59:43 · 222 阅读 · 1 评论 -
《剑指offer》练习-面试题12-矩阵中的路径
题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串...原创 2018-04-20 20:29:02 · 127 阅读 · 0 评论 -
《剑指offer》练习-面试题62-孩子们的游戏(眼圈重最后剩下的数字)
题目:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去.......原创 2018-08-06 17:18:14 · 146 阅读 · 0 评论 -
《剑指offer》练习-面试题19-正则表达式的匹配
题目:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配链接:https://www.nowcoder.com/practice/45327ae2...原创 2018-08-16 22:36:46 · 177 阅读 · 0 评论 -
《剑指offer》练习-面试题31-栈的压入、弹出序列
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)package offer;import java.util.Stack;...原创 2018-08-19 10:28:30 · 197 阅读 · 0 评论 -
《剑指offer》练习-面试题30-包含min函数的栈
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。package offer;import java.util.Stack;public class Solution30 { Stack<Integer> dataStack = new Stack<>(); Stack<Integer&g...原创 2018-08-19 10:28:37 · 168 阅读 · 0 评论 -
《剑指offer》练习-面试题29-顺时针打印矩阵
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。首先:把矩阵看成若干个圈,用循环来打印出这些圈,循环的终止条件是columns>start*2 && rows>start*2然后:For each circle:可以分为四步打印。第一步:从左到右打印一行;第二部:从上到下打印一列(条件:终止行大于起始行);第三步:从右到左打印一行(条件:...原创 2018-07-02 22:05:59 · 114 阅读 · 0 评论 -
《剑指offer》练习-面试题21-调整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。思路1:从头扫描这个数组,每碰到一个偶数,拿出这个数字,并把位于这个数字后面的所有数字往前挪动一位。挪完之后在数组的末尾有一个空位,这时把该偶数放入这个空位。时间复杂度是O(n2)。思路2:扫描这个数组,如果发现有偶数出现在奇数前面,则交换它们的顺序。两个指示牌i=...原创 2018-06-30 22:43:58 · 87 阅读 · 0 评论 -
《剑指offer》练习-面试题10-斐波那切数列
题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39 package offer;public class Solution10 { public static void main(String[] args) { long start1 = System.currentTimeMillis();...原创 2018-04-18 19:58:41 · 152 阅读 · 0 评论 -
《剑指offer》练习-面试题57-和为s的连续正序列
题目:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数序列。序列...原创 2018-08-02 22:01:01 · 183 阅读 · 0 评论 -
《剑指offer》练习-面试题57-和为s的数字
题目:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。思路:夹逼package offer;import java.util.ArrayList;public class Solution57 { public ArrayList<Integer> FindNumbersWithSu...原创 2018-08-02 20:15:55 · 114 阅读 · 0 评论 -
《剑指offer》练习-面试题16-数值的整数次方
题目:实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。链接:https://www.nowcoder.com/questionTerminal/1a834e5e3e1a4b7ba251417554e07c00思路:指数为负数时,输出的结果是base的倒数。但是base为0时...原创 2018-04-27 22:18:01 · 150 阅读 · 0 评论 -
《剑指offer》练习-面试题2-实现Singleleton模式
单例模式:每个类只需要一个实例。作用:保证整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(也可以不存在)。package offer;public class Solution2 { private Solution2() { }// 私有的构造函数 private static Solution2 uniqueInstance = new Solution2...原创 2018-08-10 18:54:27 · 328 阅读 · 0 评论 -
《剑指offer》练习-面试题13-机器人的运动范围
题目:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?package offer;publ...原创 2018-04-23 20:19:06 · 108 阅读 · 0 评论 -
《剑指offer》练习-面试题34-二叉树中和为某一值的路径
题目:输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)链接:https://www.nowcoder.com/questionTerminal/b736e784e3e34731af99065031301bcapackage offe...原创 2018-07-30 19:19:42 · 255 阅读 · 0 评论 -
《剑指offer》练习-面试题52-两个链表的第一个公共节点
题目:输入两个链表,找出它们的第一个公共节点。链接:https://www.nowcoder.com/questionTerminal/6ab1d9a29e88450685099d45c9e31e46来源:牛客网思路一:栈(后进先出)。分别把两个链表的节点放入两个栈里,这样两个链表的尾节点就位于两个栈的栈顶,接下来比较两个栈顶的节点是否相同。如果相同,则把栈顶弹出接着比较下一个栈顶,...原创 2018-07-22 21:05:53 · 354 阅读 · 0 评论 -
《剑指offer》练习-面试题8-二叉树的下一个结点
题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:(按有无右子树来划分)中序遍历思想:左(子树)--根--右(子树)1、有右子树的,那么下个结点就是右子树最左边的点;(eg:D(--N),B(--I),A(--F),C(--L))2、没有右子树的,也可以分成两类:a)是父节点左孩子(eg...原创 2018-04-16 22:01:18 · 89 阅读 · 0 评论 -
《剑指offer》练习-面试题45-把数组排成最小的数
题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接处的所有数字中的最小的一个。例如,输入数组{3,32,321},则打印出这3个数字能排成的最小数字321323。package offer;import java.util.Scanner;public class Solution45 { public String PrintMinNumber(int[] num...原创 2018-07-12 22:49:32 · 179 阅读 · 0 评论 -
《剑指offer》练习-面试题5-替换空格
题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如,输入“We are happy.”,则输出“We%20are%20happy.”。链接:https://www.nowcoder.com/questionTerminal/4060ac7e3e404ad1a894ef3e17650423package offer;import java.util.Scanner;...原创 2018-04-15 16:35:59 · 214 阅读 · 0 评论 -
《剑指offer》练习-面试题7-重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:①根据前序遍历第一个值确定根结点的值1;②在中序遍历序列中,由根结点的值1确定其位置;③位于值1左边的都是左子树结点的值,后面的都是有子树结点的...原创 2018-04-10 22:49:12 · 115 阅读 · 0 评论 -
《剑指offer》练习-面试题4-二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。例如下面的二维数组就是每行、每列都递增排序。如果在这个数组中查找数字7,则返回true;如果查找数字5,由于数组不含有该数字,则返回false。1 2 8 92 4 9 1...原创 2018-04-14 23:09:04 · 216 阅读 · 0 评论 -
《剑指offer》练习-面试题3-数组中重复的数字
题目一:找出数组中重复的数字在一个长度为n的数组里的所有数组都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请好处数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。package offer; import java.util.Scanner; ...原创 2018-04-14 23:11:28 · 112 阅读 · 0 评论 -
《剑指offer》练习-面试题43-1~n整数中1出现的次数
题目:输入一个整数n,求1~n这n个整数的十进制表示中1出现的次数。链接:https://www.nowcoder.com/questionTerminal/bd7f978302044eee894445e244c7eee6来源:牛客网首先可以先分类: 我们知道在个位数上,1会每隔10出现一次,例如1、11、21等等,我们发现以10为一个阶梯的话,每一个完整的阶梯里面都有一个1,例如数字...原创 2018-07-11 22:44:47 · 439 阅读 · 0 评论 -
《剑指offer》练习-面试题42-连续子数组的最大和
题目:输入一个整型数组,数组里有整数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。思路:对于一个数A,若是A的左边累计数非负,那么加上A能使得值不小于A,认为累计值对于整体和是有贡献的。如果前几项累计值为负数,则认为有害于总和。用total来记录当前累计值,maxSum记录最大和。package offer;import java.ut...原创 2018-07-11 22:06:17 · 100 阅读 · 0 评论 -
《剑指offer》练习-面试题39-数组中出现次数超过一半的数字
题目:数组中有一个数字出现的额次数超过数组长度的一半,请找出这个数字。思路:(剑指offer解法二,时间复杂度O(n))在遍历数组是保存两个值:一个是数组中的一个数字;另一个是次数。当遍历到下一个数字的时候,如果下一个数组和之前保存的数字相同,则次数+1,;如果不同,则次数-1。如果次数为0,那么保存下一个数字,并把次数设为1。https://www.nowcoder.com/ques...原创 2018-07-04 20:52:49 · 157 阅读 · 0 评论 -
《剑指offer》练习-面试题38-字符串的排列
题目:输入一个字符串,打印出该字符串中字符的所有排列。解法一(剑指offer):package offer;import java.util.ArrayList;import java.util.Collections;import java.util.HashSet;import java.util.Scanner;import java.util.Set;pu...原创 2018-07-03 22:34:12 · 193 阅读 · 0 评论 -
*《剑指offer》练习-面试题51-数组中的逆序对
题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的综述。例如,在数组{7,5,6,4}中,一共存在5个逆序对,分别是(7,6)、(7,5)、(7,4)、(6,4)、(5,4)。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007package o...原创 2018-07-16 22:50:45 · 136 阅读 · 0 评论 -
《剑指offer》练习-面试题49-丑数
题目:我们把只包含因子2、3、5的数称作丑数(Ugly Number)。求从小到大的顺序的第1500个丑数。例如,6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做第一个丑数。package offer;import java.util.ArrayList;import java.util.Scanner;public class Solution49 { /* *...原创 2018-07-13 22:40:21 · 135 阅读 · 0 评论 -
《剑指offer》练习-面试题6-从尾到头打印链表
题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。思路1:①第一个遍历的结点最后输出,最后一个遍历的结点最先输出。这是“后进后出”,可以用栈实现;②每经过一个结点的时候,把该结点放到一个栈中;③遍历完整个链表后,从栈顶开始逐个输出结点的值,此时输出的结点的顺序已经反过来了。定义数据结构:(1)Stack stack 用于保存链表中的元素(2)ArrayList&...原创 2018-04-10 21:47:36 · 86 阅读 · 0 评论