- 博客(201)
- 资源 (5)
- 收藏
- 关注
原创 剑指Offer - 字符串的排列
1、题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。2、上代码import java.util.*;public class Solution { TreeSet<String> res = new TreeSet<>(); //可能
2020-07-21 21:32:03
128
原创 字符串反转 - 面试题
1、题目描述 - 如题2、上代码package 剑指Offfer;import java.io.InputStreamReader;import java.util.Scanner;public class 字符串反转 { public static void main(String[] args) { Scanner in = new Scanner(new InputStreamReader(System.in)); String str = in.next(); ch
2020-07-21 17:42:47
182
原创 LeetCode 814. 二叉树剪枝
1、题目链接https://leetcode-cn.com/problems/binary-tree-pruning/给定二叉树根结点root,此外树的每个结点的值要么是 0,要么是 1。返回移除了所有不包含 1 的子树的原二叉树。( 节点 X 的子树为 X 本身,以及所有 X 的后代。)2、分析二叉树的大部分题目都可以使用递归来思考。当前访问节点的左、右子树都为null(也就是为叶子节点),且当前节点的值为0,则需要删除。也就相当于删除值为0的叶子结点。3、代码..
2020-07-21 09:14:41
153
原创 LeetCode 买卖股票的最佳时机 - 超详细讲解系列题
1、分析使用通用方法,也即动态规划DP(1)LeetCode121. 买卖股票的最佳时机class Solution { public int maxProfit(int[] prices) { if(prices == null || prices.length == 0) return 0; int n = prices.length; int[][] dp = new int[n][2]; for(int i .
2020-07-20 18:41:32
694
原创 LeetCode 206. 反转链表 - 迭代和递归(超详细解题思路)
1、题目链接https://leetcode-cn.com/problems/reverse-linked-list/2、分析(1)迭代使用双指针直接上代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solutio
2020-07-20 09:09:30
180
原创 LeetCode 19. 删除链表的倒数第N个节点
1、题目链接https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/2、分析设置了一个虚拟头结点,可以有效的避免删除头结点等一些边界情况。cur=dummy;//赋值为虚拟头结点,关键3、上代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode ne...
2020-07-19 21:23:05
101
原创 剑指Offer - 数组中只出现一次的数字
1、题目描述链接:https://www.nowcoder.com/practice/e02fdb54d7524710a7d664d082bb7811?tpId=13&&tqId=11193&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。2、上代码(1)使用H.
2020-07-19 20:20:10
124
原创 约瑟夫环问题(圆圈中最后剩下的数) - 链表模拟超好理解
1、题目描述剑指Offer 链接:https://www.nowcoder.com/practice/f78a359491e64a50bce2d89cff857eb6?tpId=13&&tqId=11199&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,
2020-07-19 17:27:17
177
原创 快速排序 - 第K个数
1、题目描述给定一个长度为n的整数数列,以及一个整数k,请用快速选择算法求出数列的第k小的数是多少。输入格式第一行包含两个整数 n 和 k。第二行包含 n 个整数(所有整数均在1~109109范围内),表示整数数列。输出格式输出一个整数,表示数列的第k小数。数据范围1≤n≤1000001≤n≤100000,1≤k≤n1≤k≤n输入样例:5 32 4 1 5 3输出样例:32、分析类似快速排序3、代码import java..
2020-07-19 09:01:11
785
原创 今日头条2019笔试题 - 剪绳子
1、题目描述有N根绳子,第i根绳子长度为LiLi,现在需要M根等长的绳子,你可以对N根绳子进行任意裁剪(不能拼接),请你帮忙计算出这M根绳子最长的长度是多少。输入格式第一行包含2个正整数N、M,表示原始绳子的数量和需求绳子的数量。第二行包含N个整数,其中第 i 个整数LiLi表示第 i 根绳子的长度。输出格式输出一个数字,表示裁剪后最长的长度,保留两位小数。数据范围1≤N,M≤1000001≤N,M≤100000,0<Li<1090<Li<109
2020-07-18 18:32:08
398
原创 反转链表
1、题目描述定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。思考题:请同时实现迭代版本和递归版本。样例输入:1->2->3->4->5->NULL输出:5->4->3->2->1->NULL2、分析(1)使用栈栈是一个特殊的数据结构,特点是先进后出(First In Last Out 简称FILO),这种特殊的数据结构,可以用在对链表做反转中,或者字符串逆序,因为要把头变成尾,尾变成头
2020-07-17 13:30:57
116
原创 Java线程池ThreadPool
1、线程池基础1.1 什么是线程池线程池是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。这里的任务就是我们学过的实现了Runnable或Callable接口的实现对象。1.2 使用线程池有哪些优势...
2020-07-10 09:31:08
180
原创 MySQL数据库高级篇(二)
1、存储引擎1.1 存储引擎概述存储引擎就是存储数据,建立索引,更新查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的。所以存储引擎也可称为表类型。1.2 各种存储引擎特性1.3 存储引擎的选择2、优化SQL步骤在应用的开发过程中,由于初期数据量小,开发人员写SQL时更重视功能上的实现;但是当应用系统上线后,随着生产数据量的急剧增长,很多SQL语句逐渐出现性能问题,对生产的影响越来越大。因此,必须对SQL语句进行优化。2.1 查看SQL执行频率..
2020-07-09 17:16:09
172
原创 MySQL数据库高级篇(一)
1、Linux系统安装MySQL1. 查看mysql安装是否成功2. mysql启动3. mysql停止4. 远程连接2、索引1. 索引概述MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。...
2020-07-08 17:40:00
742
1
原创 微服务与微服务架构
一、概念微服务架构是使用一套小服务来开发单个应用的方式或途径,每个服务基于单一业务能力构建,运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,并能够通过自动化部署机制来独立部署。这些服务可以使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。二、1、微服务结构图2、微服务的特点...
2020-07-07 20:10:57
657
原创 动态规划 - 完全背包问题
1、题目描述有NN种物品和一个容量是VV的背包,每种物品都有无限件可用。第ii种物品的体积是vivi,价值是wiwi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,VN,V,用空格隔开,分别表示物品种数和背包容积。接下来有NN行,每行两个整数vi,wivi,wi,用空格隔开,分别表示第ii种物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤...
2020-07-03 19:52:59
1118
原创 由浅入深解析ThreadLocal
1、ThreadLocal介绍1.1 官方介绍从Java官方文档中的描述:ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问(通过get和set方法访问)时能保证各个线程的变量相对独立于其它线程内的变量。ThreadLocal实例通常来说都是private static类型的,用于关联线程和线程上下文。我们可以得知ThreadLocal的作用是:提供线程内的局部变量,不同的线程之间不会相互干扰;这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或组件之间一些公
2020-07-02 12:44:32
134
原创 java类的加载
1、类的加载概述1.1 类加载我们编写的".java"扩展名的源代码文件中存储着要执行的程序逻辑,这些文件需要经过java编译器编译成".class"文件,".class"文件中存放着编译后虚拟机指令的二进制信息。当需要用到某个类时,虚拟机将会加载它,并在内存中创建对应的class对象,这个过程称之为类的加载。一个类的生命周期从类被加载、连接和初始化开始;只有在虚拟机内存中,我们的java程序才可以使用它。整个过程如下图所示:2、类的加载、类的连接、类的初始化当程序...
2020-07-01 21:55:55
266
原创 前端 - Node.js学习
一、Node.js概述1. 什么是Node.js简单的说,Node.js就是运行在服务端的JavaScript。 Node.js是一个基于Chrome javaScript运行时建立的一个平台,也就是一个可以在js中接收和处理web请求的应用平台;可以把它想象成tomcat应用平台(使用纯js编写)。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行JavaScript的速度非常快,性能好。时间驱动:可以根据各种不同的动作做出响应,调度
2020-06-30 19:48:44
478
原创 基础算法 - 逆序对的数量
一、逆序对的数量1、题目描述给定一个长度为n的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数n,表示数列的长度。第二行包含 n 个整数,表示整个数列。输出格式输出一个整数,表示逆序对的个数。数据范围1≤n≤1000001≤n≤100000输入样例:62 3 4 5 6 1输出样例:5
2020-06-30 11:02:34
1718
原创 基础算法 - 整数二分查找(模板)
1、二分查找的思路 - 避免边界情况2、二分查找模板// 整数二分算法模板bool check(int x) {/* ... */} // 检查x是否满足某种性质// 区间[l, r]被划分成[l, mid]和[mid + 1, r]时使用:int bsearch_1(int l, int r){ while (l < r) { int mid = l + r >> 1; if (check(mid)) r = m...
2020-06-29 22:45:19
389
4
原创 TCP连接传输中的三次握手和四次挥手
一、TCP的连接建立TCP建立连接的过程叫做握手 握手需要在客户端和服务器之间交换三个TCP报文段,称之为三报文握手 采用三报文握手主要是为了防止已失效的连接请求报文段突然又传送到了,产生错误确认ACK,只有当ACK=1时,确认号字段才有效。当ACK=0时,确认号无效。二、TCP的连接释放数据传输结束后,通信的双方都可释放连接 TCP连接释放过程是四报文挥手数据传输结束后,通信的双方都可释放连接。A的应用进程先向其TCP发出连接释放报文段,并停止发送数据,主动关闭TCP.
2020-06-29 10:29:49
896
原创 Nginx 反向代理与负载均衡
一、概述1、什么是NginxNginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。官方测试 nginx 能够支支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定。2、Nginx应用场景1)http 服务器。Nginx 是一个 http 服务可以独立提供 http 服务。可以做网页静态服务器。2)虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。3)反向代理,负载均衡。当网站的访问量达到一
2020-06-28 18:41:58
307
原创 IDEA和git的配置
1、从github创建一个工程,下载到本地IDEA2、使用github创建一个新的mallproject工程3、将git的mallprohect工程clone到本地4、idea的配置文件一定不能提交git5、提交到git(1) add(2)commit(3)push(4)结果...
2020-06-28 10:14:54
290
原创 设计模式 - 代理模式
一、代理模式介绍静态代理:由用户自定义代理类动态代理:由程序自动生成代理类二、静态代理 static proxypackage proxy.staticproxy;public class ProxyStar implements StarStuff{ private StarStuff star; public ProxyStar(StarStuff star) { this.star = star; } @Override publi...
2020-06-27 23:14:49
112
原创 设计模式 - 建造者模式
一、建造者模式介绍二、1、2、Builderpackage builder;public class DHUBuilder implements AirShipBuilder{ @Override public String buildModule(String module) { return module; } @Override public String buildEngine(String engine) { return engine;..
2020-06-27 20:39:07
153
原创 设计模式 - 工厂模式
一、工厂模式介绍二、简单工厂模式,也称为静态工厂模式简单工厂的缺点:不满足OCP开闭原则;实际开发使用较多package factory.simplefactory;public class Factory { public Car product(String type) { if("奥迪".equals(type)) { return new Audo(); }else if("比亚迪".equals(type)) { return new Bdy.
2020-06-27 20:00:21
101
原创 设计模式 - 单例模式
一、核心作用保证一个类只有一个实例,并且提供一个访问该实例的全局访问点(public开发公共方法)。二、饿汉式实现类初始化时,立即加载这个对象,也就没有了延时加载;天然的线程安全。package pattern.singleton;/** * 饿汉式单例模式 * @author zhou * */public class SingletonDemo1 { //类初始化时,立即加载这个对象;天然的线程安全 private static SingletonDemo1 s
2020-06-27 18:01:47
192
原创 基础算法 - 归并排序(超简单记忆模板)
1、题目描述给定你一个长度为n的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1~109109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤1000001≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 52、分析时间复杂度:..
2020-06-27 14:56:37
549
原创 基础算法 - 快速排序(超简单好记模板)
1、题目描述给定你一个长度为n的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1~109109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤1000001≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 52、代码模板import ja.
2020-06-27 11:23:11
592
原创 搜索与图论 - Dijkstra求最短路I
1、题目描述给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为正值。请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出-1。输入格式第一行包含整数n和m。接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式输出一个整数,表示1号点到n号点的最短距离。如果路径不存在,则输出-1。数据范围1≤n≤5001≤n≤500,1≤m≤1051≤m≤105,图中涉及边长均不超过10000。输入样例:
2020-06-26 20:14:58
336
原创 搜索与图论 - 有向图的拓扑序列
1、题目描述给定一个n个点m条边的有向图,点的编号是1到n,图中可能存在重边和自环。请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出-1。若一个由图中所有点构成的序列A满足:对于图中的每条边(x, y),x在A中都出现在y之前,则称A是该图的一个拓扑序列。输入格式第一行包含两个整数n和m接下来m行,每行包含两个整数x和y,表示存在一条从点x到点y的有向边(x, y)。输出格式共一行,如果存在拓扑序列,则输出拓扑序列。否则输出-1。数据范围1≤n,m≤
2020-06-26 13:57:19
1174
原创 搜索与图论 - 图中点的层次
1、题目描述给定一个n个点m条边的有向图,图中可能存在重边和自环。所有边的长度都是1,点的编号为1~n。请你求出1号点到n号点的最短距离,如果从1号点无法走到n号点,输出-1。输入格式第一行包含两个整数n和m。接下来m行,每行包含两个整数a和b,表示存在一条从a走到b的长度为1的边。输出格式输出一个整数,表示1号点到n号点的最短距离。数据范围1≤n,m≤1051≤n,m≤105输入样例:4 51 22 33 41 31 4输出样例:1
2020-06-26 10:48:45
697
原创 搜索与图论 - 树的重心
1、题目描述给定一颗树,树中包含n个结点(编号1~n)和n-1条无向边。请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。输入格式第一行包含整数n,表示树的结点数。接下来n-1行,每行包含两个整数a和b,表示点a和点b之间存在一条边。输出格式输出一个整数m,表示重心的所有的子树中最大的子树的结点数目。数据范围1≤n≤1051≤n≤10
2020-06-25 22:33:31
381
原创 搜索与图论 - 走迷宫
1、题目描述给定一个n*m的二维整数数组,用来表示一个迷宫,数组中只包含0或1,其中0表示可以走的路,1表示不可通过的墙壁。最初,有一个人位于左上角(1, 1)处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角(n, m)处,至少需要移动多少次。数据保证(1, 1)处和(n, m)处的数字为0,且一定至少存在一条通路。输入格式第一行包含两个整数n和m。接下来n行,每行包含m个整数(0或1),表示完整的二维数组迷宫。输出格式输出一
2020-06-25 13:32:05
363
原创 搜索与图论 - n皇后问题
1、问题描述n-皇后问题是指将 n 个皇后放在 n∗n 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。现在给定整数n,请你输出所有的满足条件的棋子摆法。输入格式共一行,包含整数n。输出格式每个解决方案占n行,每行输出一个长度为n的字符串,用来表示完整的棋盘状态。其中”.”表示某一个位置的方格状态为空,”Q”表示某一个位置的方格上摆着皇后。每个方案输出完成后,输出一个空行。输出方案的顺序任意,只要不重复且没有遗漏即可。
2020-06-24 22:57:04
439
原创 搜索与图论 - DFS
1、题目描述给定一个整数n,将数字1~n排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格式共一行,包含一个整数n。输出格式按字典序输出所有排列方案,每个方案占一行。数据范围1≤n≤71≤n≤7输入样例:3输出样例:1 2 31 3 22 1 32 3 13 1 23 2 12、分析3、代码idx 代表深搜的层数import java.util.*;import java.io.*;.
2020-06-24 09:15:43
232
原创 数据结构 - 字符串哈希
1、题目描述给定一个长度为n的字符串,再给定m个询问,每个询问包含四个整数l1,r1,l2,r2l1,r1,l2,r2,请你判断[l1,r1l1,r1]和[l2,r2l2,r2]这两个区间所包含的字符串子串是否完全相同。字符串中只包含大小写英文字母和数字。输入格式第一行包含整数n和m,表示字符串长度和询问次数。第二行包含一个长度为n的字符串,字符串中只包含大小写英文字母和数字。接下来m行,每行包含四个整数l1,r1,l2,r2l1,r1,l2,r2,表示一次询问所涉及的两个区间。
2020-06-23 20:23:01
195
原创 数据结构 - 模拟哈希表
1、题目描述维护一个集合,支持如下几种操作:“I x”,插入一个数x; “Q x”,询问数x是否在集合中出现过;现在要进行N次操作,对于每个询问操作输出对应的结果。输入格式第一行包含整数N,表示操作数量。接下来N行,每行包含一个操作指令,操作指令为”I x”,”Q x”中的一种。输出格式对于每个询问指令“Q x”,输出一个询问结果,如果x在集合中出现过,则输出“Yes”,否则输出“No”。每个结果占一行。数据范围1≤N≤1051≤N≤105−109≤x≤109
2020-06-23 15:16:40
274
log4j.xml框架
2020-06-20
IKAnalyzer中文分词.rar
2020-06-06
luke-swing-8.0.0-luke-release.zip
2020-06-05
datatimepicker.rar
2020-05-22
SMSUtils.java
2020-05-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅