剑指offer
宫城诗
这个作者很懒,什么都没留下…
展开
-
20200722——剑指offer 面试题50:只出现一次的字符串
package question50_只出现一次的字符串;/** * @Classname Mmz * @Description TODO * @Date 2020/7/22 0:25 * @Created by mmz */public class Mmz { static char Core(String string){ int[] result = new int[256]; char[] chars = string.toCharArray(原创 2020-07-22 00:33:34 · 118 阅读 · 0 评论 -
20200719——剑指offer 面试题21:调整数组顺序使奇数位于偶数前面
package question22_倒数第k个节点;import java.util.Arrays;/** * @Classname Mmz * @Description TODO * @Date 2020/7/19 14:48 * @Created by mmz */public class Mmz { static int[] Core(int[] num){ if(num == null || num.length <=0){原创 2020-07-19 15:02:42 · 93 阅读 · 0 评论 -
20200719——剑指offer 面试题19:正则表达式匹配
package question19_正则表达式匹配;import java.util.Scanner;/** * @Classname Mmz * @Description TODO * @Date 2020/7/19 14:06 * @Created by mmz */public class Mmz { public static boolean match(char[] str, char[] pattern) { if (str == null || p原创 2020-07-19 14:48:14 · 119 阅读 · 0 评论 -
20200718——剑指offer 面试题2:实现Singleton模式
什么饿汉,懒汉式,在这里就不多提了。直接volatile修饰静态对象。package question2_实现单例模式;/** * @Classname Mmz * @Description TODO * @Date 2020/7/18 0:27 * @Created by mmz */public class Mmz { private static volatile Mmz mmz; private Mmz(){ } public static M原创 2020-07-18 00:37:56 · 126 阅读 · 0 评论 -
20200411——剑指offer 面试题28:对称的二叉树
package question28_对称二叉树;import sun.reflect.generics.tree.Tree;/** * @Classname MaIn * @Description TODO * @Date 2020/4/11 22:37 * @Created by mmz */public class MaIn { static class Tre...原创 2020-04-11 22:48:01 · 100 阅读 · 0 评论 -
20200411——剑指offer 面试题25:合并两个排序的链表
package question25_合并两个排序的链表;import java.util.List;/** * @Classname Main * @Description TODO * @Date 2020/4/11 21:52 * @Created by mmz */public class Main { static class ListNode { ...原创 2020-04-11 21:57:35 · 99 阅读 · 0 评论 -
20200326——剑指offer 面试题24:反转链表
反转链表package question24_release_list;/** * @Classname Solution * @Description TODO * @Date 2020/3/26 21:43 * @Created by mmz */public class Solution { static class ListNode{ int va...原创 2020-03-26 21:48:49 · 164 阅读 · 0 评论 -
20200326——剑指offer 面试题23:链表中环的入口节点
解决这个问题的第一步是如何确定一个链表中包含环。我们同样可以用两个指针解决这个问题。和前面的问题一样,定义两个指针,同时从链表的头结点出发,一个指针一次走一步,另一个指针一次走两步。如果快的指针追上了走的慢的指针,那么链表就包含环。第二步是如何找到环的入口,我们还是可以用两个指针来解决这个问题。先定义两个指针P1和P2指向链表的头结点。如果链表中的环有n个节点,则指针P1先在链表上向前移动n步,...原创 2020-03-26 20:16:58 · 137 阅读 · 0 评论 -
20200411——剑指offer 面试题13:机器人运动的范围
package question13_机器人运动范围;/** * @Classname Main * @Description TODO * @Date 2020/4/11 16:47 * @Created by mmz */public class Main { static int Moving(int threshold,int rows,int cols){ ...原创 2020-04-11 17:17:49 · 108 阅读 · 0 评论 -
20200331——剑指offer 面试题9:用两个栈实现一个队列
package question9_stact_replace_queue;import java.util.Stack;/** * @Classname Solution3 * @Description TODO * @Date 2020/3/31 16:38 * @Created by mmz */public class Solution3 { private ...原创 2020-03-31 16:59:27 · 144 阅读 · 0 评论 -
20190912——剑指offer 面试题3 题目1找出数组中重复的数字
题目一:找出数组中重复的数字,在一个长度为n的数组里所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3} ,那么对应的输出是重复的数字2和3书中的给出的思路与分析一共为三种。第一种,解决这个问题的一个简单的方法是先把输入的数组排序。从排序的数组中找...原创 2019-09-14 17:27:33 · 206 阅读 · 1 评论 -
20200331——剑指offer 面试题17:打印从1到最大的n位数
面试题17 打印从1到最大的n位数package qustion17_print_number;/** * @Classname Solution * @Description TODO * @Date 2020/3/9 14:48 * @Created by mmz */public class Solution { //初始化 public static vo...原创 2020-03-31 22:35:38 · 166 阅读 · 0 评论 -
20200331——剑指offer 面试题15:二进制中1的个数
package question15_find_one;/** * @Classname Solution1 * @Description TODO * @Date 2020/3/31 22:00 * @Created by mmz */public class Solution1 { static int count1(int number){ int ...原创 2020-03-31 22:04:53 · 120 阅读 · 0 评论 -
20200331——剑指offer 面试题14:割绳子
package question14_cut_rope;/** * @Classname Solution1 * @Description TODO * @Date 2020/3/31 21:41 * @Created by mmz */public class Solution1 { static int cutRope(int m){ if(m<...原创 2020-03-31 21:58:09 · 175 阅读 · 0 评论 -
20200331——剑指offer 面试题12:矩阵中的路径
package question12_find_path;/** * @Classname Solution1 * @Description TODO * @Date 2020/3/31 18:05 * @Created by mmz */public class Solution1 { static boolean hasPath(char[][] chars,Stri...原创 2020-03-31 19:23:54 · 119 阅读 · 0 评论 -
20200331——剑指offer 面试题11: 旋转数组的最小数字
package question11_find_min;import java.lang.reflect.Array;import java.util.Arrays;/** * @Classname Solution2 * @Description TODO * @Date 2020/3/31 17:42 * @Created by mmz */public class So...原创 2020-03-31 17:53:48 · 190 阅读 · 0 评论 -
20200331——剑指offer 面试题10:斐波那契数列
package question10;/** * @Classname Solution2 * @Description TODO * @Date 2020/3/31 17:02 * @Created by mmz */public class Solution2 { static int getN(int number){ if(number == 0 ...原创 2020-03-31 17:11:32 · 154 阅读 · 0 评论 -
20200331——剑指offer 面试题8:二叉树的下一个节点
考查中序遍历。1,如果有一个节点,有右子树,那么它的下一个节点就是它右子树的最左子节点。如果右子树没有没有左节点,那么就返回右子树的根节点。2.如果一个节点,没有右子树,并且他是他父亲的左子节点,那么他的下一个节点就是父节点。3.如果一个节点,没有右子树,而且他还是他父亲节点的右子树,那么就要找到他父节点,如果他父节点上该节点父节点的右子树那么继续往上遍历,如果有一个节点的饰他父节点左子树节...原创 2020-03-31 16:36:19 · 101 阅读 · 0 评论 -
20200331——剑指offer 面试题7:重建二叉树
涉及到树的基础。前序 遍历,就是先遍历根部,在遍历左子节点和右子节点。中序是先遍历左子树,再遍历根部,最后遍历右子节点。所以在前序给出的第一数字就是根节点。然后在中序遍历中,找到这个数,那么这个数的左边,都是这个根节点的左子树。第一步要在前序遍历中找到第一个节点。第二步从中序遍历中找到这个节点。第三步找到左子树右子树第四步递归循环package question7_build_tr...原创 2020-03-31 16:00:32 · 117 阅读 · 0 评论 -
20200331——剑指offer 面试题6:从头到尾打印链表
我用的是递归算法package question6_print_link;/** * @Classname Solution * @Description TODO * @Date 2020/3/31 15:06 * @Created by mmz */public class Solution { static class ListNode{ int v...原创 2020-03-31 15:20:54 · 147 阅读 · 0 评论 -
20200330——剑指offer 实现Singleton模式 面试题2
这是一道很简单的题。就是很简单的实现Singleton,单例模式。那么这篇博客,详细的复习一下单例模式。单例模式特点单例类只能有一个实例化的类。单例类必须自己创建自己唯一的实例。单例类必须给所有其他对象提供这一实例。主要解决主要解决一个全局使用的类,不断的创建与销毁。如何解决获取这个单例对象,如果无就创建返回,如果有直接返回。核心代码单例模式对象的构造方法,权限修饰符要设置为...原创 2020-03-30 22:34:23 · 108 阅读 · 0 评论 -
20200330——剑指offer 扑克牌中的顺子 面试题61
package question61_puke;import java.lang.reflect.Array;import java.util.Arrays;/** * @Classname Solution * @Description TODO * @Date 2020/3/30 19:23 * @Created by mmz */public class Solutio...原创 2020-03-30 19:48:19 · 93 阅读 · 0 评论 -
20200330——剑指offer n个骰子的点数 面试题60
题目把n个骰子仍在地上,所有的骰子朝上一面的点数之和为s,输入n,打印s的所有可能的值出现的概率。解法package question60_n_add;/** * @Classname Solution * @Description TODO * @Date 2020/3/30 16:32 * @Created by mmz */public class Solution {...原创 2020-03-30 19:45:04 · 101 阅读 · 0 评论 -
20200330——剑指offer 队列的最大值 面试题59
题目一:滑动窗口的最大值给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,它们的最大值分别为{4,4,6,6,6,5}自我分析第一种蛮力法数组长度为arr.length-1遍历从0~arr.length-1双重for循环整型变量max 输出最大值package questio...原创 2020-03-30 14:03:42 · 130 阅读 · 0 评论 -
20200330——剑指offer 反转字符串 面试题58
package question56_reverse_str;/** * @Classname Solution * @Description TODO * @Date 2020/3/30 0:32 * @Created by mmz */public class Solution { static void reverse(char[] data,int begin,in...原创 2020-03-30 00:34:55 · 88 阅读 · 0 评论 -
20200330——剑指offer 和为s的数字 面试题57
package question56_all_s;import java.util.HashMap;/** * @Classname Solution * @Description TODO * @Date 2020/3/30 0:11 * @Created by mmz */public class Solution { static void getAll(int...原创 2020-03-30 00:20:48 · 84 阅读 · 0 评论 -
20200329——剑指offer 数组中数字出现的次数 面试题56
package question56_find_number;/** * @Classname Solution * @Description TODO * @Date 2020/3/29 23:49 * @Created by mmz */public class Solution { public void FindNumAppearOnce(int[] arr,int...原创 2020-03-30 00:03:45 · 144 阅读 · 0 评论 -
20200329——剑指offer 二叉树的深度 面试题55
package question55_depth_of_tree;/** * @Classname Solution * @Description TODO * @Date 2020/3/29 23:37 * @Created by mmz */public class Solution { class TreeNode{ int value ; ...原创 2020-03-29 23:39:37 · 81 阅读 · 0 评论 -
20200329——剑指offer 二叉搜索树的第k大节点 面试题54
package question54_find_k_node;/** * @Classname Solution * @Description TODO * @Date 2020/3/29 22:22 * @Created by mmz */public class Solution { class TreeNode{ int value ; ...原创 2020-03-29 23:39:12 · 108 阅读 · 0 评论 -
20200329——剑指offer 在排序数组中查找数字 面试题53
package question53_find_number_in_array;/** * @Classname Solution * @Description TODO * @Date 2020/3/29 22:07 * @Created by mmz */public class Solution { static int getFirstK(int[] data,in...原创 2020-03-29 22:20:25 · 76 阅读 · 0 评论 -
20200329——剑指offer 面试题52:两个链表的第一个公共节点
package question52_first_public_node;/** * @Classname Solution * @Description TODO * @Date 2020/3/29 16:25 * @Created by mmz */public class Solution { static class ListNode{ int va...原创 2020-03-29 16:34:28 · 98 阅读 · 0 评论 -
20200329——剑指offer 第一个只出现一次的字符 面试题50
package question50_find_first_string;/** * @Classname Solution * @Description TODO * @Date 2020/3/29 16:17 * @Created by mmz */public class Solution { public int FirstNotRepeateChar(Strin...原创 2020-03-29 16:24:56 · 96 阅读 · 0 评论 -
20200329——剑指offer 面试题49:丑数
第一种暴力算法package question49_urgly_number;/** * @Classname Solution1 * @Description TODO * @Date 2020/3/29 11:15 * @Created by mmz */public class Solution1 { public static boolean isUgrly(in...原创 2020-03-29 16:05:56 · 121 阅读 · 0 评论 -
20200328——剑指offer 面试题48:最长不含重复字符的子字符串
我们不难找出字符串的所有子字符串,然后就可以判断每个子字符串中是否包含重复的字符。这种蛮力方法唯一的缺点就是效率。一个长度为n个字符串中有n方个子字符串,我们需要O的时间判断一个字符串中是否包含重复的字符,因此该解法的总时间效率是On的三次方。接下来我们用动态规划算法来提高效率。首先定义函数f(i)表示以第i个字符为结尾的不包含重复字符的字符串的最长长度,我们从左到右逐一扫描字符中的每个字符,当...原创 2020-03-29 01:52:41 · 133 阅读 · 0 评论 -
20200328——剑指offer 面试题47:礼物的最大值
这是一个典型的动态规划的问题,我们先用递归的的思路来分析。我们先定义第一个函数f(i,j)表示打到坐标为i,j的各自时,能拿到的礼物总和的最大值,根据题目要求,我们有两种可能的途径到达坐标为i,j的格子;通过格子(i-1,j)或者是(i,j-1)。所以f(i,j) = max(f(i-1,j),f(i,j-1))+ girf[i,j]尽管我们用递归来分析问题,但由于有大量重复的计算,导致递归的...原创 2020-03-28 22:24:57 · 148 阅读 · 0 评论 -
20200328——剑指offer 面试题46:把数字翻译成字符串
package question46_translate_to_String;/** * @Classname Solution * @Description TODO * @Date 2020/3/28 21:06 * @Created by mmz */public class Solution { public static int translateToStrin...原创 2020-03-28 21:36:15 · 133 阅读 · 0 评论 -
20200328——剑指offer 面试题45:把数组排成最小的数
这道题最直接的解法是应该先求出这个数组中所有数字的全排列,然后把每个排列拼起来,最后求出拼起来的数字的最小值。求数组的排列和面试题38 字符串的排列 非常类似,这里不再详细介绍。根据排列组合的知识,n个数字总共有n!个排列,我们再来看一种更快的算法。这套题其实是希望我们能找到一个排序规则,数组根据这个规则排序之后能排成一个最小的数字。要确实排序规则,就要比较两个数字,也就是给出两个数字m和n,...原创 2020-03-28 20:47:16 · 93 阅读 · 0 评论 -
20200328——剑指offer 面试题44:数字序列中的某一为的数字
package question44_find_math;/** * @Classname Solution * @Description TODO * @Date 2020/3/28 15:56 * @Created by mmz */public class Solution { public static int returnNumber(int n){ ...原创 2020-03-28 16:07:47 · 133 阅读 · 0 评论 -
20200328——剑指offer 面试题42:连续子数组的最大和
package question42_find_max;/** * @Classname Solution * @Description TODO * @Date 2020/3/28 15:32 * @Created by mmz */public class Solution { public static int findMax(int[] arr){ ...原创 2020-03-28 15:38:04 · 123 阅读 · 0 评论 -
20200328——剑指offer 面试题40:最小的k个数
这道题最简单的思路莫过于把输入的n个正数排序,排序之后位于最前面的k个数就是最小的k个数,这种思路的时间复杂度是Onlogn,面试官会提示我们还有更快的算法。解法一:时间复杂度为On的算法,只有当我们可以修改输入的数组的时候可用解法二:是时间复杂度为LogK的算法。特别适合处理海量数据。我们可以先创建一个大小为k的数据容器来存储最小的k个数字,接下来每次从输入的n个整数中读入一个数,如果容...原创 2020-03-28 15:27:25 · 118 阅读 · 0 评论