自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (1)
  • 收藏
  • 关注

原创 ArchLinux系统安装

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-10-21 10:23:05 299

原创 Docker在私有库中拉取镜像时报错:ERROR: The image for the service you‘re trying to recreate has been removed. If y

这里写自定义目录标题在使用docker-compose从私有仓库拉取镜像时报如下的错:Pulling jetlinks (registry.cn-shenzhen.aliyuncs.com/XXX/XXX)...ERROR: The image for the service you're trying to recreate has been removed. If you continue, volume data could be lost. Consider backing up your d

2021-08-17 13:18:02 9600

原创 macOS系统下上传文件出现“upload file exception: [Errno 30] Read-only file system:”错误

在实现上传文件功能时出现upload file exception: [Errno 30] Read-only file system:错误。网上一番搜索尝试操作之后找到解决方法。出现这个错误的原因是macOS big sur中根目录不能读写。这个事情在上一个版本catalina的时候,就出现过一次。然后我一开始找到的很多方法都是针对catalina版本的系统的,在bigsur中并不起作用。最后在https://newsn.net/say/mac-big-sur-root-readonly.html中找到

2021-04-12 14:00:07 2630

原创 字母大小写转换的方法

字母大小写转换的方法:统一转成大写:ch & 0b11011111 简写:ch & 0xDF统一转成小写:ch | 0b00100000 简写:ch | 0x20比较的时候注意加上小括号哦,因为位运算优先级比较低。

2020-06-19 08:40:30 201

原创 奇奇怪怪的计算(力扣里的加法、快速幂、求1…n的和等)

数值的整数次方面试题题16.实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。这题最简单的方法就是for循环,但是超时也是必然的。public double myPow(double x, int n) { double res=1.0; for (int i = 0; i < Math.abs(n); i++) { res *= x; }

2020-06-02 09:45:34 317

原创 Manacher算法没有详解,只有实现

Manacher算法,又叫“马拉车”算法,可以在时间复杂度为O(n)的情况下求解一个字符串的最长回文子串长度的问题。具体详解网上比较多,写不清楚先不写了。package Algorithm;public class Manacher { public static char[] manacherString(String str){ char[] chars=new char[str.length()*2+1]; char[] s=str.toCharArr

2020-05-19 11:04:48 109

原创 KMP算法

KMP 字符串匹配算法,具体流程讲讲太烦了呀,讲不清楚,不讲了,忘了的话再回去看视频吧。下面只记一下代码。package Algorithm;public class KMP { public static int getIndexOf(String s,String m){ if (s==null || m==null || m.length()<1 || s.length()<m.length()){ return -1;

2020-05-18 17:25:03 92

原创 母牛生牛问题

题目描述母牛每年生一只母牛,新出生的母牛成长三年后也能每年生一只母牛,假设不会死。求N年后,母牛的数量。思路列出前几年的母牛的数量,可以得到f(n)=f(n-1)+f(n-3)代码package Algorithm;public class Cow { public static int cowNumber1(int n){ if (n<1) return 0; if (n==1||n==2||n==3){ return

2020-05-15 09:40:54 329

原创 项目宣讲

题目描述一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。 给你每一个项目开始的时间和结束的时间(给你一个数组,里面是一个个具体的项目),你来安排宣讲的日程,要求会议室进行的宣讲的场次最多。返回这个最多的宣讲场次。思路选择最先结束的项目,去掉因为做这个项目而不能做的项目,再从剩下的项目中选择最先结束的项目。代码package Algorithm;import java.util.Arrays;import java.util.Comparator;public class

2020-05-15 08:58:40 192

原创 求项目的最大收益(贪心)

题目描述输入:参数1:正数数组costs参数2:正数数组profits参数3:正数k参数4:正数mcosts[i]表示i号项目的花费profits[i]表示i号项目在扣除花费之后还能挣到的钱(利润)k表示你不能并行、只能串行的最多做k个项目m表示你初始的资金说明:你每做完一个项目,马上获得的收益,可以支持你去做下一个项目。输出: 你最后获得的最大钱数。思路维护一个大根堆和一个小根堆,大根堆按项目的收益排序,小根堆按项目的花费排序。所有项目入小根堆;从小根堆中弹出所有的当前可以

2020-05-14 17:01:14 262

原创 切金条(哈夫曼编码,贪心)

题目描述一块金条切成两半,是需要花费和长度数值一样的铜板的。比如长度为20的金条,不管切成长度多大的两半,都要花费20个铜板。一群人想整分整块金条,怎么分最省铜板? 例如,给定数组{10,20,30},代表一共三个人,整块金条长度为10+20+30=60. 金条要分成10,20,30三个部分。 如果,先把长度60的金条分成10和50,花费60再把长度50的金条分成20和30,花费50 一共花费110铜板。但是如果,先把长度60的金条分成30和30,花费60再把长度30金条分成10和20,花费30一共花费9

2020-05-14 16:26:43 414

原创 最低的字典序

题目描述给定一个字符串类型的数组strs,找到一种拼接方式,使得把所有字符串拼起来之后形成的字符串具有最低的字典序。思路假设有两个字符串a,b,a和b拼接起来的字符串表示为a.b。如果a.b的字典序小于b.a,就把字符串a放在前面,否则把字符串b放在前面。每两个字符串之间都按照这个标准进行比较,以此标准排序后,再依次串起来的大写字符串就是结果。代码package Algorithm;import java.util.Arrays;import java.util.Comparator;p

2020-05-13 12:56:47 123

原创 前缀树(Trie树)和Java实现

什么是前缀树Trie树,即前缀树,又称单词查找树,字典树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。Trie树的核心思想是空间换时间,利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。 它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。它有3个基本性质:根节点不包含字符,除根节点外每一个节点都只包含一个字符。从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。每

2020-05-13 12:30:34 460

原创 岛问题

问题描述一个矩阵中只有0和1两种值,每个位置都可以和自己的上、下、左、右 四个位置相连,如果有一片1连在一起,这个部分叫做一个岛,求一个矩阵中有多少个岛?举例:001010111010100100000000这个矩阵中有三个岛。思路单cpu处理的比较简单,就是遍历矩阵,遇到1时用一个感染函数把与它相邻的1改为1。当矩阵很大,需要进行拆分的时候,每个小矩阵处理完之后用并查集进行边界的处理。代码package Graphe;public class Islands { pub

2020-05-12 11:15:54 172

转载 并查集及其java实现

并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题。一些常见的用途有求连通子图、求最小生成树的 Kruskal 算法和求最近公共祖先(Least Common Ancestors, LCA)等。使用并查集时,首先会存在一组不相交的动态集合 S={S1,S2,⋯,Sk}S=\lbrace{S_1,S_2,⋯,S_k\rbrace}S={S1​,S2​,⋯,Sk​},一般都会使用一个整数表示集合中的一个元素。每个集合可能包含一个或多个元素,并选出集

2020-05-12 10:46:18 310

原创 设计RandomPool结构

题目描述设计一种结构,在该结构中有如下三个功能:insert(key):将某个key加入到该结构,做到不重复加入。delete(key):将原本在结构中的某个key移除。getRandom(): 等概率随机返回结构中的任何一个key。要求:Insert、delete和getRandom方法的时间复杂度都是 O(1)。思路维护两个hashmap,一个存放<key,Integer>,一个存放 <key,Integer>size记录当前有多少个key插入时在两个map中同

2020-05-11 17:30:55 112

原创 已知一棵完全二叉树,求其节点的个数

已知一棵完全二叉树,求其节点的个数要求:时间复杂度低于O(N),N为这棵树的节点个数思路满二叉树:层数为lll,节点个数为2l−12^l-12l−1个从根节点出发,一路遍历其左孩子可以得到该二叉树的高度h从该二叉树的右孩子节点开始遍历其左孩子可以得到该部分二叉树的高度,如果高度等于lll,那么左子树是满二叉树,可以得到节点数,右子树不是满二叉树,对其进行递归;如果右子树的高度是l−1l-1l−1,那么右子树是满二叉树,可以得到节点数,对左子树进行递归。代码package BinaryTre

2020-05-11 15:10:01 386

原创 判断一棵树是否是完全二叉树

思路二叉树按层遍历:若有任何一个节点有右孩子没有左孩子,肯定不是完成二叉树,直接返回false;若一个节点不是两个孩子都全,也不是只有右孩子没有左孩子,那它后面遍历的节点都必需是叶子节点。代码public static class Node { public int value; public Node left; public Node right; public Node(int data) { this.value = data;

2020-05-11 14:33:45 100

原创 判断一棵树是否是搜索二叉树

思路二叉树中序遍历的结果是依次升序的,则该二叉树是搜索二叉树,否则不是。可在非递归的二叉树中序遍历中稍加修改。代码public static class Node { public int value; public Node left; public Node right; public Node(int data) { this.value = data; }}public static boolean isBST(Node head

2020-05-11 14:11:35 248

原创 判断一棵二叉树是否是平衡二叉树

思路递归判断每个节点及其子节点组成的树是否是平衡树代码package BinaryTree;public class IsBalancedTree { public static class Node { public int value; public Node left; public Node right; public Node(int data) { this.value = data;

2020-05-11 13:51:21 116

原创 二叉树的序列化和反序列化

二叉数序列化二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过某种符号表示空节点(#),以 _ 表示一个结点值的结束(value_)。下图是先序序列化的示意图:二叉树的反序列化二叉树的反序列化是指:根据某种遍历顺序得...

2020-05-08 11:07:28 330

原创 在二叉树中找到一个节点的后继节点

题目描述现在有一种新的二叉树节点类型如下:public class Node { public int value; public Node left; public Node right; public Node parent; public Node(int data) { this.value = data; }} 该结构比普通二叉树节点结构多了一个指向父节点的pa...

2020-05-06 17:09:50 197

原创 实现二叉树的先序、 中序、 后序遍历, 包括递归方式和非递归方式

实现二叉树的先序、 中序、 后序遍历, 包括递归方式和非递归方式package BinaryTree;import java.util.Stack;public class PreInPosTraverasl { public static class Node{ public int value; public Node left; ...

2020-05-06 16:34:14 533

原创 两个单链表相交的一系列问题

问题描述在本题中,单链表可能有环,也可能无环。给定两个单链表的头节点 head1和head2,这两个链表可能相交,也可能不相交。请实现一个函数,如果两个链表相交,请返回相交的第一个节点;如果不相交,返回null 即可。 要求:如果链表1 的长度为N,链表2的长度为M,时间复杂度请达到 O(N+M),额外空间复杂度请达到O(1)。...

2020-05-06 15:39:59 120

原创 复制含有随机指针节点的链表

题目描述一种特殊的链表节点类描述如下:public class Node { public int value; public Node next; public Node rand; public Node(int data) { this.value = data; }} Node类中的value是节点值,next指针和正常单链表中next指针的意义一样,都指向下一个节...

2020-04-29 18:08:26 83

原创 将单向链表按某值划分成左边小、中间相等、右边大的形式

题目描述给定一个单向链表的头节点head,节点的值类型是整型,再给定一个整数pivot。实现一个调整链表的函数,将链表调整为左部分都是值小于 pivot 的节点,中间部分都是值等于pivot的节点,右部分都是值大于 pivot的节点。 除这个要求外,对调整后的节点顺序没有更多的要求。 例如:链表9->0->4->5->1,pivot=3。 调整后链表可以是1->0-...

2020-04-29 16:47:27 161

原创 判断一个链表是否为回文结构

题目描述给定一个链表的头节点head,请判断该链表是否为回文结构。例如: 1->2->1,返回true。1->2->2->1,返回true。15->6->15,返回true。1->2->3,返回false。进阶: 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1)。思路链表相关的问题,笔试时尽快做出来即可,空间...

2020-04-29 15:37:46 472

原创 二分查找模版

基础二分查找用于一般的二分查找public static int binSearch2(int[] arr, int target) { int lo = 0, hi = arr.length - 1, mid = 0; while (lo <= hi) { mid = lo + (hi - lo) / 2; if (arr[mid] =...

2020-04-29 15:08:05 91

原创 打印两个有序链表的公共部分

题目描述给定两个有序链表的头指针head1和head2,打印两个链表的公共部分。思路类似于快速排序的merge方法。代码public class PrintCommonPart { public static class Node{ public int val; public Node next; public Node(int...

2020-04-28 10:35:32 98

原创 在行列都排好序的矩阵中找数

题目描述给定一个有N*M的整型矩阵matrix和一个整数K, matrix的每一行和每一列都是排好序的。实现一个函数,判断K 是否在matrix中。 例如:0 1 2 52 3 4 74 4 4 85 7 7 9如果K为7,返回true;如果K为6,返回false。要求:时间复杂度为O(N+M),额外空间复杂度为O(1)。思路从矩阵的右上角或者左下角开始寻找,当从右上角开始寻找时...

2020-04-28 10:24:20 172

原创 “之”字形打印矩阵

题目描述给定一个矩阵matrix,按照“之”字形的方式打印这 个矩阵,例如:1 2 3 45 6 7 89 10 11 12“之”字形打印的结果为:1,2,5,9,6,3,4,7,10,11, 8,12要求: 额外空间复杂度为O(1)。思路这题也应使用宏观结构的思想,不要局限与下标要怎么变。首先给两个点A、B,初始位置都在0,0点。A向右移动,B向左移动,每...

2020-04-27 17:38:22 669

原创 旋转正方形矩阵

题目描述给定一个整型正方形矩阵matrix,请把该矩阵调整成顺时针旋转90度的样子。要求: 额外空间复杂度为O(1)。思路从外圈开始,每一圈各自旋转90度,每一圈左上角和右下角的点的坐标可以确定,通过改变左上角和右下角的点缩小正方形。代码public static void rotate(int[][] matrix){ int tR=0; int tC=0; ...

2020-04-27 16:27:45 246

原创 转圈打印矩阵

题目描述给定一个整型矩阵matrix,请按照转圈的方式打印它。 例如:1 2 3 45 6 7 89 10 11 1213 14 15 16 打印结果为:1,2,3,4,8,12,16,15,14,13,9, 5,6,7,11,10要求:额外空间复杂度为O(1)。思路按圈打印,给定左上角点的坐标和右下角点的坐标,顺时针打印一圈,然后左上角的点往右下方走一个,右下角的点往左上方走一个...

2020-04-24 12:17:48 147

原创 猫狗队列问题

题目描述宠物、狗和猫的类如下:public class Pet { private String type; public Pet(String type) { this.type = type; } public String getPetType() { return this.type; } }public class Dog extends Pet { ...

2020-04-24 10:30:17 106

原创 用队列实现栈;用栈实现队列

图的广度优先遍历需要用到栈,但有时题目会要求你不能使用栈,这是就需要用两个队列实现栈,然后用这个栈来实现图的广度优先遍历。用两个队列实现栈的基本思路:数据push时只进data队列;数据pop时先将data中的数据倒入help队列中,留最后一个在data队列中,然后返回给用户,最后data和help队列的指针交换一下;数据peek时方法和pop一样,只是peek的数据还需要入help队列...

2020-04-22 20:41:52 80

原创 在实现栈的基本功能的基础上, 再实现返回栈中最小元素的操作

实现一个特殊的栈, 在实现栈的基本功能的基础上, 再实现返回栈中最小元素的操作。【要求】1. pop、push、getMin操作的时间复杂度都是O(1)。2. 设计的栈类型可以使用现成的栈结构。思路:同时维护两个栈结构,一个栈就是正常的栈,另一个栈放当前的最小值,和第一个栈同步操作。package LinearStructure;import java.util.Stack;pu...

2020-04-22 19:45:07 200

原创 用数组结构实现大小固定的队列和栈

public class Array_To_Stack_Queue { //使用数组结构实现栈 public static class ArrayStack{ private Integer[] arr; private int size; public ArrayStack(int initSize){ ...

2020-04-22 19:21:34 110

原创 最大差值问题

问题描述:给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序(桶排序)分析:题目要求了不能使用非基于比较的排序,但是我们可以借用桶排序的概念假设有N个数,设置N+1个桶,将数放到桶中,最大值放到最后一个桶,最小值放到第一个桶,故中间一定存在一个空桶(至少)设计空桶的目的是否定最大差值来之一个桶内,而不是说最大差值一定在空桶附近public s...

2020-04-22 15:14:25 379

原创 比较器和java中的实现

比较器和java中的实现在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题。通常对象之间的比较可以从两个方面去看:第一个方面:对象的地址是否一样,也就是是否引用自同一个对象。这种方式可以直接使用“==“来完成。第二个方面:以对象的某一个属性的角度去比较。对最新的JDK8而言,有三种实现对象比较的方法:一、覆写Object类的equals()方法;二、继承C...

2020-04-22 13:42:50 98

原创 荷兰国旗问题

荷兰国旗问题问题描述思路代码实现问题描述给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N)思路从l到r遍历,使用三个指针,curr表示当前遍历到的位置;less和less前的数小于num;more和more后的数大于num;less和more中间的数等于num。初...

2020-04-21 09:26:36 74

Practice Standard for Scheduling进度管理实践标准原文和有道文档翻译结果.zip

软件项目管理的《进度管理实践标准》英文原文和有道机翻结果。翻译文档没有经过修改,有进度管理相关基础知识的可以大概看懂

2020-04-23

空空如也

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

TA关注的人

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