自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 剑指Offer31

剑指Offer第三十一天数学(困难)题1:剪绳子II给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m - 1] 。请问 k[0]k[1]…*k[m - 1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。剪绳子的题目,

2021-10-07 23:15:42 109

原创 剑指Offer30

剑指Offer第三十天分治算法(困难)题1:打印从1到最大的n位数输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。力扣中该题的返回类型是int[],这就将数据的范围固定为32位内了但是剑指Offer原题中,返回类型为String,主要用于考察大数问题//leetcode返回int[]解法class Solution{ public int[] printNumbers(int n){

2021-10-07 23:14:22 129

原创 剑指Offer29

剑指Offer第二十九天动态规划(困难)题1:正则表达式匹配请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。。。看了题解都想了好久。。感觉好难而且很高频。。class Solution { public boolean isMatch(St

2021-10-07 23:13:08 125

原创 剑指Offer28

剑指Offer第二十八天搜索与回溯算法(困难)序列化二叉树居然是困难?。。题1:序列化二叉树请实现两个函数,分别用来序列化和反序列化二叉树。你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。提示:输入输出格式与 LeetCode 目前使用的方式一致,详情请参阅 LeetCode 序列化二叉树的格式。你并非必须采取这种方式,你也可以采用其他的方法解决这个问题。

2021-10-01 20:53:55 76

原创 剑指Offer27

剑指Offer第二十七天栈与队列(困难)今天又是充满希望的一天 > ~ <题1:滑动窗口的最大值给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。看题解的。。呜呜,想到用大顶堆了,但是写不出来class Solution { //参考题解的,我自己写不出来,理清思路写下的拙见 public int[] maxSlidingWindow(int[] nums, int k) { int n = nums

2021-09-30 23:37:41 68

原创 剑指Offer26

剑指Offer第二十六天字符串(中等)题1:表示数值的字符串请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。数值(按顺序)可以分成以下几个部分:若干空格一个 小数 或者 整数(可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个 整数若干空格小数(按顺序)可以分成以下几个部分:(可选)一个符号字符(’+’ 或 ‘-’)下述格式之一:至少一位数字,后面跟着一个点 ‘.’至少一位数字,后面跟着一个点 ‘.’ ,后面再跟着至少一位数字一个点 ‘.’ ,后面跟着至少一位数字整

2021-09-29 22:43:33 129

原创 剑指Offer25

剑指Offer第二十五天模拟(中等)题1:顺时针打印矩阵输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。class Solution { public int[] spiralOrder(int[][] matrix) { //定义行 int row = matrix.length; if(row == 0){ return new int[0]; } //定义列

2021-09-28 23:13:42 77

原创 剑指Offer24

剑指Offer第二十四天数学(中等)题1:剪绳子给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。class Solution { public int cuttingRope(int n) { //设d

2021-09-27 23:01:28 59

原创 剑指Offer23

剑指Offer第二十三天数学(简单)题1:数组中出现次数超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。class Solution { public int majorityElement(int[] nums) { Arrays.sort(nums); int mid = (nums.length-1)>>1; return nums[

2021-09-26 21:51:56 50

原创 剑指Offer22

剑指Offer第二十二天位运算(中等)题1:数组中数字出现的次数I一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。class Solution { public int[] singleNumbers(int[] nums) { //异或很容易想到,分组就很难想到了,我记得之前应该是做过这道题,结果还是不会做,想不到分组的方法。 //分组的原理:

2021-09-25 21:46:51 53

原创 剑指Offer21

剑指Offer第二十一天位运算(简单)题1:二进制中1的个数编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量).)。public class Solution { public int hammingWeight(int n) { int sum = 0; for(int i = 0 ; i < 32; i++){ if((n & (1 &l

2021-09-24 23:15:18 79

原创 剑指Offer20

剑指Offer第二十天分治算法(中等)题1:重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val

2021-09-23 23:41:07 82

原创 剑指Offer19

剑指Offer第十九天回溯算法(中等)题1:求1+2+…+n求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。参考题解:https://leetcode-cn.com/problems/qiu-12n-lcof/solution/mian-shi-ti-64-qiu-1-2-nluo-ji-fu-duan-lu-qing-xi-/虽然我觉得这种题没啥价值,但是确实不会,也学到了,学到了就有价值

2021-09-22 22:44:26 62

原创 剑指Offer18

剑指Offer第十八天回溯算法(中等)题1:二叉数的深度输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。class Solution { //回溯算法,把要返回的值定义在公共区域 int max = 0; public int maxDepth(TreeNode root) { helper(root, 0); return max; } /

2021-09-21 14:12:01 68

原创 剑指Offer17

剑指Offer第十七天大堆顶排序(中等)题1:最小的k个数输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。class Solution { public int[] getLeastNumbers(int[] arr, int k) { //用Arrays.sort()固然简单,但是这题的核心还是要手写快排吧。 if(k==0 || arr.length == 0)

2021-09-20 23:46:32 56

原创 剑指Offer16

剑指Offer第十六天排序(简单)题1:把数组排成最小的数输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。class Solution { public String minNumber(int[] nums) { String[] arr = new String[nums.length]; for (int i = 0; i < nums.length; i++) { ar

2021-09-19 14:49:38 78

原创 剑指Offer15

剑指Offer第十五天回溯算法(中等)题1:二叉树中和为某一值的路径输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。在这里插入图片描述class Solution { //回溯算法,可以把要返回的属性放在公共可调用的位置,往往回溯的dfs方法需要去更改他的值 List<List<Integer>> res = new ArrayList<>();

2021-09-18 23:11:25 54

原创 剑指Offer14

剑指Offer第十四天回溯算法(中等)题1:矩阵中的路径输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。class Solut

2021-09-17 20:28:59 48

原创 剑指Offer13

剑指Offer第十三天双指针(简单)题1:调整数组顺序使奇数位于偶数位前面输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。class Solution { public int[] exchange(int[] nums) { int left = 0; int right = nums.length-1; while(left < right){

2021-09-16 22:39:36 60

原创 剑指Offer12

剑指Offer第十二天链表(简单)感觉链表还是有点生疏啊题1:合并两个排序的链表输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if(l1==null && l2== null){ return null; } ListN

2021-09-15 22:28:10 62

原创 剑指Offer11

剑指Offer第十一天双指针(简单)题1:删除链表的节点给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。class Solution { public ListNode deleteNode(ListNode head, int val) { ListNode dummyHead = new ListNode(-1); dummyHead.next = head; ListNode cur = dummyHead;

2021-09-14 20:48:58 44

原创 剑指Offer10

剑指Offer第十天动态规划(中等)题1:把数字翻译成字符窜给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。class Solution { public int translateNum(int num) { //将int类型转为String类型 String str =

2021-09-13 23:07:55 51

原创 剑指Offer9

剑指Offer第九天动态规划(中等)题1:连续子数组的最大和输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。class Solution { public int maxSubArray(int[] nums) { int maxSum = Integer.MIN_VALUE; int cur = 0; for(int num : nums){ c

2021-09-12 01:08:43 64

原创 剑指Offer8

剑指Offer第八天动态规划,这天都是很简单的题。。题1:斐波那契数列写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。cl

2021-09-11 15:26:38 49

原创 剑指Offer7

剑指Offer第七天题1:树的子结构输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。看的懂,但是还是不理解。。(如果我碰到这种题,我会写的出来吗。。)参考题解写的。。https://leetcode-cn.com/problems/shu-de-zi-jie-gou-lcof/solution/mian-shi-ti-26-shu-de-zi-jie-gou-xian-xu-bian-li-p//*

2021-09-11 00:01:24 66

原创 剑指Offer6

剑指Offer第六天很有意义的一天,学到了很多不懂的东西!题1:从上到下打印二叉树从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。class Solution { public int[] levelOrder(TreeNode root) { //层序遍历 if(root == null){return new int[0];} //用队列来判断是否节点是否到头(因为需要经常入队出队,所以用LinkedList)

2021-09-09 23:49:22 56

原创 剑指Offer5

剑指Offer第五天题1:二维数组中的查找在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { if(matrix == null || matrix.length == 0 |

2021-09-08 23:08:28 61

原创 剑指Offer4

剑指Offer第四天题1:数组中重复数字找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。class Solution { public int findRepeatNumber(int[] nums) { Set<Integer> set = new HashSet<>();

2021-09-07 23:33:37 51

原创 剑指Offer3

剑指Offer第三天都很简单,没什么好说的。。题1:替换空格请实现一个函数,把字符串 s 中的每个空格替成"%20"。s.charAt()比较用==不用equals,因为是转成char类型的class Solution { public String replaceSpace(String s) { StringBuilder sb = new StringBuilder(); for(int i = 0; i < s.length(); i++

2021-09-06 22:55:42 92

原创 剑指Offer2

剑指Offer第二天题1:从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。简单题,一遍过,听到从尾到头,就想到要用栈来解决class Solution { public int[] reversePrint(ListNode head) { ListNode cur = head; Stack<Integer> stack = new Stack<>(); while(cur

2021-09-05 23:45:08 49

原创 剑指offer1

剑指Offer第一天题1:用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )实例看不懂没关系,直接代码走起:class CQueue { //首先如何用两个栈构成队列?这显然要对这两种数据类型的结构有基本了解 //队列是先入先出(FIFO),而栈是后入先出(LIFO) //所以如果将

2021-09-04 14:40:51 53

原创 面试官提问:遇到过序列化和反序列化吗?如何理解?

序列化是一种用来处理对象流的机制,是将java对象转换为字节序列的过程对象流:将对象转换为二进制流byte[],我们可以对二进制流进行读写操作,流数据也可以在网络中进行传输。实现方式:类实现Serializable接口(标记接口,只是一个单纯的标记而已,说明这个类是可以被序列化的)(不想序列化的字段可以用transient修饰)实现Externalizable接口(是Serializable接口的子类,transient无效)我们可以使用一个输出流(FileOutputStream构造一个O

2021-09-01 00:37:53 101

原创 面试官提问:你了解SPI机制吗?你知道它在那些场合被用到吗?

SPI机制什么是SPI?SPI,全称Service Provider interface,即服务提供发现接口。(本质上就是面向接口编程)它能通过在classpath/META-INF/services文件夹中查找文件,自动加载文件中定义的类。Tips1: 虽然平时并不会直接使用到 SPI 来实现业务,但其实我们使用过的绝大多数框架都会提供 SPI 接口方便使用者扩展自己的功能。常见的如Dubbo,它提供了一系列的拓展此外在JDBC中也使用了SPI机制例子我们先定义一个接口(我们通

2021-08-28 22:23:56 1230

原创 SpringCloud学习(注册中心篇(无Nacos))

服务注册中心什么是服务治理在传统的RPC远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理来管理服务与服务之间依赖关系,可以实现服务调用、负载均衡、容错等功能,实现服务发现与注册。SpringCloud封装了Netflix公司开发的Eureka模块来实现服务治理可以想象好多电话线,需要一个交换机来进行调配,构建通信...

2020-10-16 16:17:45 693 1

原创 Zookeeper单机伪集群学习(...)

学习SpringCloud中要用到Zookeeper就又跑过来学了。。概念ZooKeeper 是一个开源的分布式协调服务,设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。Zookeeper本质上是一个分布式的小文件存储系统。提供基于类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。从而用来维护和监控你存储的数据的状态变化,从而可以达到基于数据的集群管理。ZooKeeper 是一个典型的分布式数据一致性

2020-10-15 16:17:56 134

原创 SpringCloud学习(还没进门篇。。)

什么是微服务(解耦解耦!!)概念通常而言,微服务架构是一种架构模式(或者说一种架构风格),它提倡将单一的应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程中,服务之间互相协调,互相配置,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通,每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境中。针对不同的服务,匹配适合的语言,工具进行管理,避免统一集中式的服务管理机制。微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底的去耦合,每一

2020-10-11 22:32:43 148

原创 Redis学习2(入门)

事务MySQL中事务四个原则(ACID)Redis单条命令是保证原子性的,但事务是不保证原子性的。Redis事务没有隔离级别的概念,所以没有隔离性所有的命令在事务中,并没有直接被执行,只有发起执行命令的时候才会执行!Exec开启事务开启事务(multi)命令入队()执行事务(exec)放弃事务编译型异常(代码有问题!命令有错!),事务中所有的命令都不会执行!运行时异常如果事务队列中存在语法性,那么执行命令的时候,其他命令是可以正常执行的

2020-10-04 22:58:50 110

原创 Redis学习1(基本介绍)

NoSQL的四大分类K-V键值对新浪:Redis美团:Redis+Tair阿里,百度:Redis+memecache文档型数据库MongoDB(要掌握!)MongoDB是一个基于分布式文件存储的数据库,C++编写,主要用来处理大量的文档!MongoDB是一个介于关系型数据库和非关系型数据中中间的产品!MongoDB是非关系型数据库中功能最丰富,最像关系型数据库的!ConthDB(了解即可)列存储数据库HBase分布式文件系统图关系数据库存放的是关

2020-09-28 10:39:13 120

原创 Linux学习(简易版)

Linux的结构Linux基本命令关机(shutdown)在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。 sync # 将数据由内存同步到硬盘中。shutdown # 关机指令,你可以man shutdown 来看一下帮助文档。shutdown –h 10 # 这个命令告诉大家,计算机将在10分钟后关机shutdown –h now # 立马关机shutdown –h 20:25 # 系统会在今天2

2020-09-25 22:03:44 304

原创 Git学习

git的三个区域Workspace:工作区,就是你平时存放项目代码的地方Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换git工作流程git的工作流程一般是这样的:1、在工作目录中添加、修改

2020-09-23 16:28:03 52

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除