自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode 212 单词搜索 II

给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words,找出所有同时在二维网格和字典中出现的单词。单词必须按照字母顺序,通过 相邻的单元格 内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。思路:将字典中的单词构成前缀树,然后对board进行bfs。有两个点,一是因为题目要求包含的单词,没有数量要求,所以找到一个单词后,我们可以将它从前缀树中清楚,二是当一个分支到了叶子结点,说明这个分支上单词都找完了.

2021-01-18 22:36:13 108

原创 LeetCode 131. 分割回文串 139.单词拆分 140 单词拆分

131 分割回文串给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例:输入: “aab”输出:[[“aa”,“b”],[“a”,“a”,“b”]]题解:dfs+dpdp[i][j] 代表s[i…j]是否是回文串,如果s[i] = s[j] 且 dp[i+1][j-1] = true,则dp[i][j] = true然后dfs,如果前缀字符串是回文,则可以产生分支和结点;如果前缀字符串不是回文,则不产生分支和结点,这一步是剪枝操

2021-01-17 18:13:31 124

原创 LeetCode 1024. 视频拼接

题目描述:你将会获得一系列视频片段,这些片段来自于一项持续时长为 T 秒的体育赛事。这些片段可能有所重叠,也可能长度不一。视频片段 clips[i] 都用区间进行表示:开始于 clips[i][0] 并于 clips[i][1] 结束。我们甚至可以对这些片段自由地再剪辑,例如片段 [0, 7] 可以剪切成 [0, 1] + [1, 3] + [3, 7] 三部分。我们需要将这些片段进行再剪辑,并将剪辑后的内容拼接成覆盖整个运动过程的片段([0, T])。返回所需片段的最小数目,如果无法完成该任务,则返

2020-10-24 21:29:16 14343

原创 LeetCode 15.三数之和 18.四数之和

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]解法:其实就是对三重循环暴力用双指针的优化加剪枝,保证组合不重复,首先将数组排序,遍历时如果当前数等于该重循环上一个数,则跳过。双指针在这道题的

2020-10-05 19:26:33 86

原创 LeetCode 501. 二叉搜索树中的众数

给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2],12/2返回[2].提示:如果众数超过1个,不需考虑输出顺序解析:根据BST树的特征,BST树的中序遍历是一个非递减数列,所以求出树的中序遍历,再去遍历这个序列即可/** * Definition fo

2020-09-25 12:01:52 83

原创 LeetCode 78.子集

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]解法一:因为给出的数字不含重复的,所以数据很小。可以利用二进制位确定当前这个数选还是不选,0 - 2的n-1次方减一, 每个数的二进制代表一种选法import java.util.ArrayList;import java.util.Li

2020-09-20 21:34:24 68

原创 LeetCode 332. 重新安排行程

给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序。所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK 开始。提示:如果存在多种有效的行程,请你按字符自然排序返回最小的行程组合。例如,行程 [“JFK”, “LGA”] 与 [“JFK”, “LGB”] 相比就更小,排序更靠前所有的机场都用三个大写字母表示(机场代码)。假定所有机票至少存在一种合理的行程。所有的机票必须都用一次 且 只能

2020-08-28 23:46:06 81

原创 LeetCode 17. 电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].解法: 每次选一个数字的一个字母,dfs遍历所有可能import java.util.LinkedList;import java.util.List;class Solution { String[] list

2020-08-26 16:02:05 158

原创 LeetCode 491. 递增子序列

给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。示例:输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]说明:给定数组的长度不会超过15。数组中的整数范围是 [-100,100]。给定数组中可能包含重复数字,相等的数字应该被视为递增的一种情况。解法:dfs遍历所有可能的子序列,每个位置只有选与不选两个选择保证序列是

2020-08-25 23:41:35 79

原创 LeetCode 459. 重复的子字符串

给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1:输入: “abab”输出: True解释: 可由子字符串 “ab” 重复两次构成。示例 2:输入: “aba”输出: False示例 3:输入: “abcabcabcabc”输出: True解法:遍历每个长度的字符串,如果当前子串长度可以被字符串长度整除,按顺序截取后面等长度子串,判断与第一个子串是否相等class Solution { publ

2020-08-24 12:28:43 126

原创 LeetCode 201. 数字范围按位与

给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1:输入: [5,7]输出: 4示例 2:输入: [0,1]输出: 0解法:按位与,都为1才是1,否则为0,一段连续的区间,找到端点的公共前缀,后面的部分因为连续,每一列都肯定有0,所以后面全是0,我们先将数向左移,移到两个数相等,再像右移补零class Solution { public int rangeBitwise

2020-08-23 23:18:54 102

原创 LeetCode 679 24点游戏

你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24。解法:暴力模拟加回溯import java.util.LinkedList;import java.util.List;class Solution { Double e = 1e-6; boolean flag = false; public boolean judgePoint24(int[] nums) { List<Double&gt.

2020-08-22 21:18:01 177

原创 LeetCode 111 二叉树的最小深度

给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。解法:bfs/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */import.

2020-08-21 16:09:40 71

原创 LeetCode 529 扫雷游戏

让我们一起来玩扫雷游戏!给定一个代表游戏板的二维字符矩阵。 ‘M’ 代表一个未挖出的地雷,‘E’ 代表一个未挖出的空方块,‘B’ 代表没有相邻(上,下,左,右,和所有4个对角线)地雷的已挖出的空白方块,数字(‘1’ 到 ‘8’)表示有多少地雷与这块已挖出的方块相邻,‘X’ 则表示一个已挖出的地雷。现在给出在所有未挖出的方块中(‘M’或者’E’)的下一个点击位置(行和列索引),根据以下规则,返回相应位置被点击后对应的面板:如果一个地雷(‘M’)被挖出,游戏就结束了- 把它改为 ‘X’。如果一个没有相.

2020-08-20 23:21:25 129

原创 LeetCode 647 回文子串

给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。解法:遍历每个回文中心,回文中心可能是单个字符,也可能是两个字符。所以我们加一层循环来处理单双回文中心,然后向两边扩展,如果是回文子串,就加一class Solution { public int countSubstrings(String s) { int len = s.length(),ans = 0; for.

2020-08-19 23:51:22 84

原创 LeetCode 109 有序链表转换二叉搜索树

题目描述给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。解法一:分治/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.

2020-08-18 23:59:14 60

原创 LeetCode 110.平衡二叉树

给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。树的高度:从结点x向下到某个叶结点最长简单路径中边的条数思路一:从下倒上遍历,先判断当前节点的左右子节点是否平衡。如果不平衡返回-1,平衡返回相应高度,当存在不平衡的子树时,整个树也就不平衡了/** * Definition for a binary tree node. * public class TreeNode { * int val;

2020-08-17 22:40:16 59

原创 SpringMVC学习笔记

文章目录一、SpringMVC1.1 简介1.2 组件1.3 Spring运行原理二、helloSpringMVC2.1 配置DispatchServlet2.2 Spring配置文件2.3 Controller2.4 注解开发2.5 Restful三、结果跳转方式3.1 ModelAndView3.2 ServletAPI5.3 SpringMVC四、数据处理4.1 处理提交数据4.2 数据显示到前端4.3 乱码过滤器五、JSON5.1 JSON简介5.2 Jackson5.3 FastJson一、S

2020-08-02 16:25:14 82

原创 Spring学习笔记(四)——Mybatis-Spring和事务

文章目录八、Mybatis-Spring8.1 配置8.2 sqlSessionFactory和SqlSession8.3 操作实现8.4 SqlSessionDaoSupport九、事务9.1 配置9.2 配置事务通知9.4 配置事务切入9.2 配置事务通知9.4 配置事务切入八、Mybatis-Spring8.1 配置mybatis<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PU

2020-07-29 12:29:13 111

原创 Spring学习笔记(三)——代理模式和AOP

文章目录六、代理模式6.1 静态代理模式6.2 动态代理模式七、AOP7.1 什么是AOP7.2 核心概念7.3 Spring实现AOP7.4 注解实现AOP六、代理模式SpringAOP的底层6.1 静态代理模式角色分析:抽象角色:一般会使用接口或者抽象类来解决真实角色:被代理的角色(房东)代理角色:代理真实角色,做一些附属操作(中介)客户:访问代理角色的人(租客)静态代理的好处:可以使真实角色的操作更纯粹,不用去关注一些公共的事务实现了业务的分工公共业务发生扩展时,方面集中

2020-07-27 23:49:00 80

原创 Spring学习笔记(二)

文章目录三、依赖注入3.1构造器注入3.2 Set方式注入3.3 扩展方式注入3.3.1 P命名空间3.3.2 C命名空间3.4 bean的作用域四、Bean的自动装配4.4.1 byName自动装配4.4.2 byType自动装配4.4.3 注解实现自动装配@Autowired@Qualifier@Resource五、使用注解开发@Component@Value@Scope衍生的注解三、依赖注入3.1构造器注入3.2 Set方式注入student.javapackage pojo;impor

2020-07-26 11:14:47 154

原创 Spring学习笔记(一)——IOC

一、Spring1.1 依赖<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.7.RE

2020-07-24 18:03:03 77

原创 Mybatis学习笔记(下)

Mybatis九、多对一查询9.1 按照结果嵌套查询9.2 按照结果嵌套处理十、一对多查询10.1 按照查询嵌套查询10.2 按照结果嵌套处理十一、动态SQL创建环境11.1 IF11.2 choose (when, otherwise)11.3 trim (where,set)11.4 SQL片段11.5 forEach十二、缓存12.1 一级缓存12.2 二级缓存12.3 自定义缓存-ehcache结语九、多对一查询测试环境搭建:新建实体类 Teacher,Student建立Mapper接口

2020-07-22 18:50:07 46

原创 Mybatis学习笔记(上)

Mybatis一、简介二、为什么需要Mybatis?三、第一个Mybatis程序3.1导入依赖3.2 核心配置文件3.3 mybatis工具类3.4 数据库3.5 Dao接口和Mapper配置文件3.6 配置Mapper3.7 测试四、CRUD4.1 、select4.1.1 接口4.1.2 Mapper4.1.3 测试4.2 Insert4.3 Update4.4 Delete4.5 paramterType-map五、配置解析5.1 environments5.2 dataSource5.3 类型别名(

2020-07-22 12:50:15 85

原创 requset转发和response重定向的区别

response:response是服务器对客户端的反馈,其对页面重定向的流程是:当客户端向服务器发起请求时,服务器重新给客户端一个URL地址,让客户端重新发起一个新的请求,在这个过程中,客户端第一次请求所携带的头信息将消失,在重定向之后而且地址栏显示的是重定向的页面,这是一种客户端行为。注意:通过重定向无法访问WEB-INF中的资源,因为重定向是客户端行为,相当于浏览器重新输入URL,而WEB-INF中的内容无法通过输入URL来访问。request:request是客户端对服务器的请求,其跳转页面

2020-07-20 23:51:47 150

原创 idea 配置文件无法被导出或者生效的问题的解决方案

在pom中加上下面这段代码就行了<!--在build中配置resources,来防止我们资源导出失败的问题--><build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.

2020-07-20 17:39:44 783

原创 JavaWeb入门-SMBMS

SMBMS这个小项目主要是javaWeb的一个回顾,项目只实现了部分功能(主要是用户管理模块),因为其他功能都是大同小异,加上本人比较懒,都是一些sql语句的不同,就没有写。主要参考狂神javaWeb最后的视频讲解,边写边回顾javaWeb的一些知识点还有这个项目的前端是直接拿过来用的,不是自己写的…项目简介:文章目录SMBMS1.环境搭建1.1 数据库的创建和连接1.2 导入相关依赖1.3 基本框架搭建1.4 编写数据库连接资源文件2. 基础类编写2.1 pojo层2.2 操作数据库

2020-07-20 16:33:57 1345 1

原创 uva 1601(单向bfs 双向bus 矩阵转图)

题意不能走到一起,或者穿着走,将矩阵转化成图,双向比单向优化300+ms单向bfs#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;char l[20][20];int num[20][20],...

2019-12-24 15:39:56 136

原创 uva 129

题意:一个字符串不存在相邻重复子串称为困难子串,给你n和L,意思是输出由前L个字母组成的字典序第n大的困难子串对于一个新加入的字母来说,每次判断只要保证含有这个字母的后缀子串没有重复即可。比如说:原先的串是:ACB当新加入一个字母C后构成串ACBC,我们只需要看新加入的后缀C 和 他前一个字母B 是否构成重复字串;然后看一下含有两个字母的后缀 BC 和之前的 AC串是否构成重复字串。#i...

2019-12-19 18:26:58 84

原创 sprinf函数

头文件:#include <stdio.h>sprintf()函数用于将格式化的数据写入字符串,其原型为:int sprintf(char *str, char * format [, argument, …]);【参数】str为要写入的字符串;format为格式化字符串,与printf()函数相同;argument为变量。除了前两个参数类型固定外,后面可以接任意多个参数。而它...

2019-12-15 14:39:27 617

原创 uva 12118(欧拉路,dfs判联通)

题解先判断有多少个连通块,假设有k个,就需要k-1条路将它们连起来,(特判一个的情况),还要计算每个连通块中的度为奇数的点,假设有n个这样的点,就要填(n-1)/2条边让它形成欧拉路,这样是最短的情况。代码#include <iostream>#include <cstdio>#include <cstring>#include <set&g...

2019-12-12 21:55:18 160

原创 uva 806(四叉树dfs 递归 )

#include <iostream>#include <cstdio>#include <vector>#include <cstring>#include <algorithm>using namespace std;vector<int>vec;char l[70][70];int dfs(int...

2019-12-12 18:42:32 91

原创 POJ2955 Brackets && poj 1141Brackets Sequence (区间dp)

poj 2955题意给你一个括号序列,求最长合法括号序列子串的长度题解dp[i][ j]表示区间 i 到 j 之间最长合法括号子串的长度,dp[ i ][ j ] 如果s[i] == s[j],dp[ i ][ j ] = dp[i+1][j-1], 更新最大值的方法是枚举 i 和 j 的中间值,然后让 dp[ i ] [ j ] = max ( dp [ i ] [ j ] , dp ...

2019-12-09 13:00:40 75

原创 HDU 4632 Palindrome subsequence(区间dp)

题意给你一个字符串要你统计其中出现过多少个不同的回文子串,回文子串不一定每个字符都连续,不同是说位置不同如aba的答案就是5 因为不同的回文子串有a(第一个a), b,aa(因为子串的字符可以不连续), aba,a(最后一个a)题解 :假设s[i] != s[j],dp[i~j] 就是由s[i+1 ~ j] 或 s[i ~ j -1] 前后加一个求出,dp[i][j] = dp[i+1][j...

2019-12-08 16:39:47 96

原创 Cheapest Palindrome(区间DP)

题意:给你一个字符串,将它变成一个回文字符串,添加或删除一个字母都有相应的价值,求最小价值题解:区间DP,从小区间推到大区间,dp[i][j]代表将s[i-j]变为回文字符串的最小代价,一个字母肯定是回文字符串,所以dp[i][i] =0, 如果s[i] == s[j],说明这个串已经是一个回文串(区间里面已经是回文字符串),则dp[i][j] = dp[i+1][j-1],当s[i] != ...

2019-12-05 15:26:54 110

原创 uva 11853 (dfs)

将每个敌人看成一个圆,题就是能不能不触碰这些圆从战场走出去,如果有几个圆上下联通(盖过边界),那肯定不能,如果没有,则一定有解。如果有解,在bfs的同时求解答案,那么答案一定在左右边界与圆的交点最南边的点,为什么是最南边,因为你dfs是从上到下遍历,所以这个圆上面都被封上了,只能走下面。可以尝试几种情况,如果bfs到的圆与左右边界有交点,那么一定满足,否则就不会改变答案初值,你品,你看着代码细...

2019-12-04 18:45:06 59

原创 uva 1599 (两次bfs)

思路:第一遍bfs从终点开始,找到每个点到终点的最短距离。第二遍bfs先找到最小的颜色值,然后将每个颜色值最小的点入队#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <queue>using namespace s...

2019-12-01 16:56:55 92

原创 uva 12171(离散化+floodfill)

这道题的难点的思路紫书上说的很清楚了,floodfill就是一个bfs填色算法但我觉得这道题难点在对离散化的理解,从区间到点的理解,如填色时为什么不包括右边界,bfs判断边界时为什么右边没到最后一个元素。这里参考一个大佬的博客:https://blog.csdn.net/weixin_33834910/article/details/94053469结合代码去理解吧#include &lt...

2019-11-21 17:39:47 227 1

原创 uva 816

题意:题解紫书主要部分讲的很清楚,但还是要自己实现一下,有好多细节需要注意#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <queue>#include <vector>using namespac...

2019-11-11 21:25:43 114

原创 uva122(二叉树)

这个题刘汝佳讲的输入可以学习一下,有好多关于字符串的技巧,这个树可以用结构体实现,也可以用数组实现,但我用数组实现超时了。结构体实现代码:#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;typedef q...

2019-11-10 16:45:07 83

空空如也

空空如也

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

TA关注的人

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