自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode382.链表随机节点:蓄水池抽样问题

具体代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { private ListNode head; private Random rdm; /** @param head The linked.

2020-09-17 17:07:05 65

原创 leetcode398.随机数索引:蓄水池抽样问题

假设当前正要读取第n个数据,则我们以1/n的概率留下该数据,否则留下前n-1个数据中的一个,以这种方式选择,所有数据流中数据被选择的概率一样。具体代码class Solution { int[] nums; public Solution(int[] nums) { this.nums = nums; } public int pick(int target) { Random r = new Random(); .

2020-09-17 16:32:34 99

原创 SpringMVC请求流程

用户通过客户端向服务器发起一个request请求,此请求会被前端控制器DispatcherServlet所拦截。前端控制器请求处理器映射器HandlerMapping去查找Handler,可以一句XML配置或注解去查找。处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(有则生成),并返回给前端控制器。前端控制器请求处理器适配器(HandlerAdapter)去执行相应的Handler(常称为controller)处理器适配器会调用并执行Handler处理器,即程序中的con.

2020-09-13 22:58:29 159

原创 springboot配置redis

spring.factories文件里之后的redis相关自动配置点进去这个RedisAutoConfiguration看看两个关注点,一个是RedisProperties.class,是将配置文件中的配置通过setter方法该类中对应属性的值。另一个是@ConditionalOnMissingBean注解作用在@bean定义上,它的作用就是在容器加载它作用的bean时,检查容器中是否存在目标类型(ConditionalOnMissingBean注解的value值)的bean了,如果存在这跳.

2020-09-13 22:34:59 113

原创 @SpringBootApplication注解

@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan( excludeFilters = {@Filter( type = FilterType.CUSTOM, classes = {TypeExcludeFilter.class}),

2020-09-13 18:12:35 102

原创 概率题.抽签问题

题目题库中有X道简单题和Y道难题,现在要增加题库里的题目,由各位出题老师依次出题。轮到某位出题老师的时候,他先从题库中随机任选一道题,如果选的是简单题,就出Z道简单题并录入题库,否则就出Z道难题并录入题库。则第m位老师出简单题的概率为?第一位老师出简单题的概率为:X/(X+Y)第二位老师出简单题的概率为:所以无论是第几位老师,最后出简单题的概率都是原始的X/(X+Y)...

2020-09-12 16:24:53 1989

原创 Spring AOP概述、常见术语及基于XML和注解的AOP具体实现

概念面向切面编程,就是在不改变原有程序的基础上为代码段增加新的功能,对其进行增强处理,设计思想来源于代理模式,代理模式实现可参考JDK动态代理常见术语切面存放切面实现的普通java类,需要在配置中通过标记指定,该类要被AOP容器识别为切面。连接点程序执行中某个具体的执行点,比如某方法调用的时候,或者处理异常的时候。在Spring AOP中,一个连接点总是表示一个方法的执行。切入点切面与程序流程的交叉点,即那些需要处理的连接点。当某个连接点满足预先指定的条件时,AOP框架能够定位到这个连接点

2020-09-12 11:48:40 152

原创 Bean的装配方式

Spring容器负责创建应用程序中的Bean,并通过依赖注入协调这些对象之间的关系。创建应用对象之间协作关系的行为通常成为装配。基于XML的Bean装配Spring提供了两种基于XML的装配方式:属性setter方法注入和构造方法注入。在Spring实例化Bean过程中,Spring首先会调用Bean的默认构造方法来实例化Bean对象,然后通过反射的方式调用setter方法来注入属性值。属性setter方法注入要求Bean必须满足两点:Bean类必须提供一个默认的构造方法。Bean类必须为需要注入

2020-09-11 22:38:21 420

原创 Bean的配置

XML(常用)Spring中,XML配置文件的根元素是<beans>,其下包含<bean>子元素,每个<bean>子元素定义一个Bean,并描述该Bean如何被装配到Spring容器中。<bean>元素常用属性id:容器中Bean的唯一标识符,Spring容器对Bean的配置、管理通过该属性完成,装配Bean时根据id值获取对象。name:Spring容器可以通过该属性对容器中的Bean进行配置和管理,name属性可以为Bean指定多个名称,每个

2020-09-11 21:50:38 597

原创 Spring IoC容器与BeanFactory、ApplicationContext接口

Spring框架的主要功能是通过其IoC容器来实现的,它可以容纳我们所开发的各种Bean,并且我们可以从中获取各种发布在Spring IoC容器里的Bean。Spring IoC容器的设计主要基于BeanFactory和ApplicationContext两个接口。BeanFactorySpring IoC设计的核心是Bean容器,BeanFactory是Spring IoC容器的核心接口,采用了java经典的工厂模式,由org.springframework.beans.factory.BeanFa

2020-09-11 21:20:51 198

原创 Bean的作用域及singleton和prototype的使用场景

容器最重要的任务是创建并管理JavaBean的生命周期,创建Bean之后,需要了解Bean在容器中是如何在不同作用域下工作的。Bean的作用域就是指Bean实例的生存空间或有效范围。singleton:在每个Spring IoC容器中,一个bean定义对应一个对象实例。Spring容器的默认作用域,当一个bean的作用域为singleton时,Spring IoC容器中只会存在一个共享的Bean实例,并且所有对Bean的请求,只要id与该Bean定义相匹配,就只会返回Bean的同一个实例。换言之,

2020-09-11 20:20:59 2505

原创 leetcode787.k站中转内最便宜的航班

题目思路dp[i][k]表示经过k个中转站后到达站i的最低费用初始化:dp[src][0]~dp[src][k] = 0,其余值为无穷大状态转移方程:dp[flight[1]][k] = Math.min(dp[flight[1]][k],dp[flight[0]][k-1]+flight[2]);具体代码class Solution { public int findCheapestPrice(int n, int[][] flights, int src, int dst, int

2020-09-09 09:44:46 134

原创 leetcode123.买卖股票的最佳时机III:一维动态规划

题目思路一:三维动态规划dp[i][j][k]:i表示第几天,j表示是否持有股票,0表示不持有,1表示持有k表示第几次交易,取值0,1,2具体代码class Solution { public int maxProfit(int[] prices) { if(prices.length < 2) return 0; int len = prices.length; int[][][] dp = new int[len][2][3]

2020-09-08 15:04:37 120

原创 leetcode120.三角形最小路径和:动态规划

题目思路从下往上走,dp[j] =Math.min(dp[j],dp[j+1])+triangle.get(i).get(j);具体实现class Solution { public int minimumTotal(List<List<Integer>> triangle) { int len = triangle.size(); int[] dp = new int[len+1]; for(int i = len-

2020-09-08 10:34:26 72

原创 抽象工厂模式

概念抽象工厂模式是在工厂模式上添加了一个创建不同工厂的抽象接口。通过抽象接口创建不同的工厂对象,根据不同的工厂对象创建不同的对象。实现手机接口及实现类定义public interface Phone{ String call();}public class PhoneApple implements Phone{ @Override public String call(){ return "apple"; }}public class PhoneHuawei imple

2020-09-07 16:55:37 63

原创 leetcode139.单词拆分:动态规划

题目思路具体实现class Solution { public boolean wordBreak(String s, List<String> wordDict) { Set<String> set = new HashSet<String>(wordDict); boolean[] dp = new boolean[s.length()+1]; dp[0] = true; for(int

2020-09-07 16:13:39 40

原创 leetcode22.括号生成:深度优先遍历

题目方法一:深度优先遍历总共有n个左括号和n个右括号left(right)表示使用了多少个左(右)括号当左右括号的使用数量为n时,把结果字符串加入结果集当左括号使用数量小于右括号时,不符合题意,return若当前仍有左括号可以使用,产生左分支if (left < n) dfs(curStr + "(", left + 1, right, n, res);当仍有右括号可以使用,且右括号剩余数量>左括号(不满足的情况已经在4时return了),产生右分支if (right &l

2020-09-07 15:48:17 72

原创 leetcode96.不同的二叉搜索树:动态规划

题目思路dp[i]表示以i为根节点的二叉搜索树种数初始化dp[0] = 1; dp[1]=1状态转移方程: dp[i] += dp[i-1]*dp[n-i];具体实现class Solution { public int numTrees(int n) { int[] dp = new int[n+1]; dp[0] = 1; dp[1] = 1; for(int i = 2;i < n+1;i++){

2020-09-07 15:11:20 58

原创 工厂模式

创建型模式提供多种创建对象的方法工厂模式抽象工厂模式单例模式建造者模式原型模式概念工厂模式在接口中定义了创建对象的方法,将具体的创建对象的过程在子类中实现,用户只需要通过接口创建需要的对象,不用关注对象的具体创建过程。通过工厂模式将创建实例和使用实例分开。具体实现//定义接口public interface Phone{ String brand();}//定义实现类public class Iphone implements Phone{ @Override pu

2020-09-07 11:55:47 60

原创 leetcode76.最小覆盖子串:滑动窗口

题目思路:滑动窗口使用new int[128]数组保存t中每个字符出现的次数使用new int[128]数组保存窗口中每个字符出现的次数使用minLength表示最小子串长度。使用count记录目前窗口中的有效字符数,当count == t.length()时,窗口长度为一个包含t中所有字符的子串的长度,更新minLength窗口右移,直到窗口中包含有效字符数量小于t.length()class Solution { public String minWindow(String

2020-09-07 11:30:46 94

原创 一个二维乱序数组,寻找不在数组中的最小自然数(java)。

思路对二维数组进行排序假设数组为M行N列,if (nums[i][j] != i*N+j) return i*N+jClass Solution{ public int findNum(int[][] nums){ Arrays.sort(nums, new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { if (o1[0] == o2[0]) retu

2020-09-07 10:38:34 292

原创 leetcode128.最长连续序列

题目方法一:集合用set去重当前元素为nums[i],如果set中包含nums[i]-1的数,则跳过(这是一种优化,从连续子序列的起点开始记录,可以减少遍历次数)如果set中不包含nums[i]-1的数,则遍历记录连续增长序列长度。class Solution { public int longestConsecutive(int[] nums) { Set<Integer> num_set = new HashSet<Integer>();

2020-09-07 10:31:09 89

原创 leetcode.字典序问题汇总

leetcode386题目具体实现class Solution { List<Integer> res = new ArrayList<>(); public List<Integer> lexicalOrder(int n) { for(int i = 1;i < 10;i++){ dfs(n,i); } return res; } public voi

2020-09-06 09:36:49 168

原创 sql:排名问题+窗口函数+leetcode178

有成绩表score如下窗口函数rank()SELECT *, rank() over (order by `SCORE` desc) as 'ranking' from leetcode.score;dense_rank()SELECT *, dense_rank() over (order by `SCORE` desc) as 'denseRank' from leetcode.score;leetcode178.分数排名具体实现select Score, dense

2020-09-02 16:33:16 115

原创 sql语句(一):增删改查

建库CREATE DATABASE leetcode建表CREATE TABLE leetcode.student ( `id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(45) NULL, `score` INT NULL, PRIMARY KEY (`id`));查询selectSELECT * FROM leetcode.student;insertinsert into leetcode.student value

2020-09-02 15:26:50 71

原创 泛型(代码示例待补充)

基本概念泛型的本质是个参数化的类型,将参数的类型作为一个参数,在运行时决定(?)。在没有泛型之前,容器返回的类型都是Object类型,因此根据实际情况,降返回值强转为期望的类型。引入泛型之后,容器中的存储类型在声明时就可以确定,因此对容器的操作不需要进行类型转换。使用泛型一方面可以增加代码的可读性,降低程序出错的可能性,也提高了程序的运行效率。ArrayList list = new ArrayList();list.add('a');Integer object = (Integer)list

2020-09-01 17:46:03 135

原创 基本数据类型与其包装类的区别

以int 和Integer为例int 为基本数据类型,直接存数值Integer为引用数据类型(当作一个类看)int a; //默认初始化为0Integer b; //默认初始化为null初始化:int a = 1;Integer b = new Integer(1);由于有了自动装箱和拆箱,也可以写://装箱Integer b = 1;//拆箱int num = b;泛型定义时不支持int。List list = new ArrayList<>(); √Li

2020-09-01 17:22:24 64

原创 关系型数据库和非关系型数据库

分类关系型数据库:MySQL、Oracle等非关系型数据库:NoSql(HBase,MongoDB,Redis等)关系型数据库优势:可以在一个表以及多个表之间做复杂的数据查询支持事务,保持数据的一致性。非关系型数据库优势:基于键值对,不需要经过SQL解析,数据之间没有耦合,易水平扩展。数据存储在缓存中,查询速度快。可以存储基础类型、对象或者集合等各种形式。分类:临时性键值存储(memcached、Redis)永久性键值存储(Redis)面向文档的数据库(MongoDB

2020-09-01 15:05:25 75

原创 leetcode199.二叉树的右视图(java):BFS和DFS

题目思路一:BFS层次遍历,记录每层最右侧元素具体实现class Solution { public List<Integer> rightSideView(TreeNode root) { List<Integer> res = new ArrayList<>(); if(root == null){ return res; } Queue<TreeNode&

2020-09-01 12:11:25 170

原创 leetcode1044.最长重复子串(java)

题目思路1.二分法确定子串长度2.Rabin-Karp字符串编码因为均是小写字母,所以系数a = 26假设abcde 分别编码为01234“abcd”编码为h = 0 * (26 ^ 3) + 1 * (26 ^ 2) + 2 * (26 ^ 1) + 3 * ( 26 ^ 0)窗口右移“bcde”编码为h = (h - 0 * (26 ^ 3)) * 26 + 4还要注意a^L的值可能非常大,可能导致整数上溢出,所以通常会对编码值取模,h = h % modulus具体代码cl

2020-09-01 11:33:05 242

空空如也

空空如也

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

TA关注的人

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