自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode226.翻转二叉树

难度:简单题目:翻转一颗二叉树对于二叉树的题,很容易想到的就是使用递归。从题目中可以看出,将每个结点进行翻转。因此我们的思路是:先将根结点的左右子树进行翻转,然后依次递归下去进行翻转:代码一:class Solution{ public TreeNode invertTree(TreeNode root){ if(root == null) return null; //将左右子树进行交换 TreeNode tmp=root.right;

2020-06-28 15:04:24 63

原创 leetcode543.计算二叉树的直径

难度:简单题目:给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。本题的解法很容易想到的就是,要求任意两个结点路径的长度,就可以转化为求左节点的最大长度和右节点的最大长度。所以我的代码如下:class Solution { public int diameterOfBinaryTree(TreeNode root) { if(root == null) return 0; ret

2020-06-28 13:06:15 187

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

这道题是力扣110道题,难度属于easy。题目要求是给定一个二叉树,判断它是不是高度平衡的二叉树。首先我们先来看看高度平衡二叉树的定义:一个二叉树每个结点的左右子树的高度差的绝对值不超过1。从这个定义里面我们可以得到两点要求:第一点:首先每个结点的左右高度差不能超过1第二点:每个结点的左右子树的高度差不能超过1这个怎么理解呢,我们下面画图来解释一下。对于上面这个图,我们知道它满足第一点,即1号结点的左边高度为3,右边高度为2,高度差为1。但是对于结点2而言左边高度为2,右边高度为0,高度差为2

2020-06-28 11:07:37 165

原创 一文详解:顺序存储二叉树

咱们先看定义:二叉树的顺序存储就是用一组连续的存储单元存放二又树中的结点元素,一般按照二叉树结点自上向下、自左向右的顺序存储。使用此存储方式,结点的前驱和后继不一定是它们在逻辑上的邻接关系,非常适用于满二又树和完全二又树。根据完全二叉树和满二叉树的特性,假设将图1中的完全二又树存放在一维数组bree中,将发现结点的编号正好与数组元素的下标对应。采用顺序存储能够最大地节省存储空间,可以利用数组元素下标值确定结点在二叉树中的位置以及结点之间的关系。(来源于百度百科)大白话解释就是:将二叉树放到数组里,放的顺

2020-06-25 16:16:36 3062 3

原创 一文详解:二叉树之前序遍历、中序遍历、后序遍历

今天是端午节,祝大家端午节快乐,端午安康!~二叉树顾名思义是一个只有两个结点的树,分为left结点和right结点。今天我们就来对二叉树的遍历方式进行一个总结回顾。二叉树是由一个个结点构成的,那么每个结点长什么样呢?我们先定义一下看看结点长什么样:树的结点:class Node{ private int no; private String name; private Node left; private Node right; 还有下面的这些方法,就不写出来

2020-06-25 13:46:48 52126

原创 八皇后问题

题目:存在8个皇后,要求任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种方法思路:1.第一个皇后先放在第一行第一列2.第二个皇后放在第二行第一列,然后判断是否ok(即是否冲突),如果不ok,继续放在第二列、第三列、一次把所有列都放完,找到一个合适3.继续放第三个皇后,还是从第一列、第二列。。。直到第8个皇后也能放在一个不冲突的位置,算是找到一个正确解4.当得到一个正确解时,在栈回退到上一个栈时,就会开始回溯,即将第一个皇后,放到第一列的所有正确解,全部得到5.然后回头继续第一个皇后放

2020-06-24 22:34:30 209

原创 数组---Leetcode769. 最多能完成排序的块

难度:中等题目:数组arr是[0, 1, …, arr.length - 1]的一种排列,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。我们最多能将数组分成多少块?示例 1:输入: arr = [4,3,2,1,0]输出: 1解释:将数组分成2块或者更多块,都无法得到所需的结果。例如,分成 [4, 3], [2, 1, 0] 的结果是 [3, 4, 0, 1, 2],这不是有序的数组。示例 2:输入: arr = [1

2020-06-23 14:37:44 199

原创 数组---Leetcode565. 数组嵌套

难度:中等题目:索引从0开始长度为N的数组A,包含0到N - 1的所有整数。找到最大的集合S并返回其大小,其中 S[i] = {A[i], A[A[i]], A[A[A[i]]], … }且遵守以下的规则。假设选择索引为i的元素A[i]为S的第一个元素,S的下一个元素应该是A[A[i]],之后是A[A[A[i]]]… 以此类推,不断添加直到S出现重复的元素。示例 1:输入: A = [5,4,0,3,1,6,2]输出: 4解释:A[0] = 5, A[1] = 4, A[2] = 0, A[

2020-06-22 14:27:49 125

原创 数组---Leetcode766. 托普利茨矩阵

难度:简单题目:如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵。给定一个 M x N 的矩阵,当且仅当它是托普利茨矩阵时返回 True。示例 1:输入:matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]输出: True解释:在上述矩阵中, 其对角线为:“[9]”, “[5, 5]”, “[1, 1, 1]”, “[2, 2, 2]”, “[3, 3]”, “[4]”。各条对角线上的所有元素均相同, 因此答案是Tr

2020-06-22 09:54:31 109

原创 数组---Leetcode697. 数组的度

难度:中等题目:给定一个非空且只包含非负数的整数数组 nums, 数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。示例 1:输入: [1, 2, 2, 3, 1]输出: 2解释:输入数组的度是2,因为元素1和2的出现频数最大,均为2.连续子数组里面拥有相同度的有如下所示:[1, 2, 2, 3, 1], [1, 2, 2, 3], [2, 2, 3, 1], [1, 2, 2], [2, 2, 3], [2, 2]

2020-06-21 13:38:46 68

原创 数组---Leetcode378. 有序矩阵中第K小的元素

难度:中等题目:给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素。示例:matrix = [[ 1, 5, 9],[10, 11, 13],[12, 13, 15]],k = 8,返回 13。代码:执行时间:8ms纯暴力解法:public class Solution { public int kthSmallestlest(int[][] matrix,int k

2020-06-20 10:36:04 225

原创 数组---Leetcode240. 搜索二维矩阵 II

难度:中等题目:编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true。给定 tar

2020-06-18 21:00:46 144

原创 数组---Leetcode287. 寻找重复数

示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) 。数组中只有一个重复的数字,但它可能不止重复出现一次。代码: public int findDuplicate(int[] nums){ int len=nums.length; int left=1; int right=len

2020-06-17 22:46:03 90

原创 Spring Boot笔记

**一、**Spring Boot 入门1、Spring Boot 简介简化Spring应用开发的一个框架;整个Spring技术栈的一个大整合;J2EE开发的一站式解决方案;2、微服务2014,martin fowler微服务:架构风格(服务微化)一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;单体应用:ALL IN ONE微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元;详细参照微服务文档3、环境准备http://www.gulixueyuan.c

2020-06-17 13:23:59 343

原创 数组---Leetcode645. 错误的集合

难度:简单题目:集合 S 包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。示例 1:输入: nums = [1,2,2,4]输出: [2,3]注意:给定数组的长度范围是 [2, 10000]。给定的数组是无序的。我的思路是暴力解法,先对数组进行排序找出相

2020-06-17 09:48:47 134

原创 maven配置的一系列问题和解决方法

在进行maven配置时,出现了一些问题,具体解决方法如下:问题1:导入maven后,没有src等文件目录解决:在新建maven工程时,不要勾选creat from archetype问题2:IDEA导入maven的配置,(File->settings->Build,Execution,Deployment->Build Tools->Maven)设置如下图所示:Maven home directory:选择解压的maven文件路径;User setting files:选择配

2020-06-16 14:23:19 3579

原创 数组---Leetcode485. 最大连续1的个数

难度:简单题目:给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含 0 和1。输入数组的长度是正整数,且不超过 10,000。程序:由于数组中只包含0和1,所以直接遍历记录个数就行。 public int findMaxConsecutiveOnes(int[] nums){ int pre =0; int coun

2020-06-15 22:48:44 118

原创 数组---Leetcode566. 重塑矩阵

难度:简单题目:给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:输入:nums =[[1,2],[3,4]]r = 1, c = 4输出:[[1,2,3,4]]解释:行遍历nums的结果是 [1,2,3,4]。新的矩阵是 1 * 4 矩阵, 用之前的元素值一行一行填充新矩阵。示例

2020-06-15 22:04:36 124

原创 redis学习记录

今天把Redis简单学习了一下,记录下Redis的一些基本使用。官网:https://redis.io中文网站:http://www.redis.net.cn/文件说明:redis.windows.conf:配置文件redis-cli.exe:redis客户端redis-server.exe:redis服务器端一、概念Redis是一款高性能的NOSQL系列的非关系型数据库(NOSQL,Not Only SQL).内存数据库非关系型数据库的优势:(1)性能NOSQL是基于键值对的,可以想象

2020-06-15 16:50:06 148

原创 数组---Leetcode283. 移动零

题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。难度:简单示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:1.必须在原数组上操作,不能拷贝额外的数组。2.尽量减少操作次数。思路:本题要求不能创建额外的数组,因此只能在原数组上进行移动,一般解法就是从0开始一次遍历,出现不为0的数字时交换字符,然后从0开始以此遍历,重复以上过程:代码: public void moveZeroes(int[] nums){

2020-06-10 22:33:17 86

原创 字符串---Leetcode696. 计数二进制子串

难度:easy给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。重复出现的子串要计算它们出现的次数。示例 1 :输入: “00110011”输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。请注意,一些重复出现的子串要计算它们出现的次数。另外,“00110011”不是有效的子串,因为所有的0(和1)没有组合在一起。示例 2 :输入: “

2020-06-09 20:54:04 128

原创 字符串---Leetcode9. 回文数

难度:简单判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。很容易想到的方式是将整数转成字符串处理(没有使用StringBuilder的方法,使用StringBulider的话

2020-06-09 18:59:02 97

原创 字符串---Leetcode205. 同构字符串

题目:给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = “egg”, t = “add”输出: true示例 2:输入: s = “foo”, t = “bar”输出: false示例 3:输入: s = “paper”, t = “title”输出: true说明:你可以假设

2020-06-07 19:04:05 135

原创 一文读懂Filter过滤器

Filter过滤器什么是Filter过滤器Filter的使用Filter生命周期FilterConfig类FilterChain过滤器链Filter的拦截路径什么是Filter过滤器1.Filter过滤器是javaWeb三大组件之一。Servlet程序、Listener监听器、Filter过滤器2.是一个接口3.作用:过滤,拦截请求,过滤响应应用场景:1.权限检查2.日记操作3.事务管理…Filter的使用要求:在web工程下,有一个目录admin目录,这个admin目录下的所有资源(

2020-06-07 13:35:02 347

原创 一文读懂Cookie&Session知识点

Cookie&SessionCookie什么是Cookie创建:(服务器创建)服务器如何获取cookieCookie值的修改Cookie的生命控制Session什么是Session会话?如何创建Session和获取(id号,是否为新)Session域数据的存取Session生命周期浏览器和Session之间关联的技术内幕Cookie什么是Cookie1.是服务器通知客户端保存键值对的一种技术2.客户端有了Cookie后,每次请求都发送给服务器3.每个cookie的大小不能超过4kb创建:

2020-06-06 16:45:08 244

原创 Servlet知识点总结2

Servlet总结2HttpServletRequest类HttpServletRequest类有什么用?HttpServletRequest类的常用方法如何获取用户的请求参数Get请求的中文乱码解决:POST请求的中文乱码解决请求转发:从一个资源跳到另一个资源HttpServletResponse类输出流如何往客户端回传数据响应的乱码 解决请求重定向请求转发和重定向的区别HttpServletRequest类HttpServletRequest类有什么用?当有请求进入Tomcat服务器时,Tomc

2020-06-06 15:33:22 101

原创 Servlet知识点总结1

Servlet学习总结Servlet介绍什么是ServletURL地址到Servlet程序的访问Servlet的生命周期通过继承HttpServlet实现Servlet(推荐)ServletConfig类ServletConfig类的三大作用ServletContext类HTTP协议Servlet介绍什么是Servlet1.Servlet是JavaEE规范之一,也就是一个接口2.是JavaWeb的三大组件之一:Servlet程序、Filter过滤器、Listener监听器3。它可以接受客户端发送的

2020-06-06 14:07:35 141

原创 字符串---Leetcode409. 最长回文串

题目:给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。思路;这题是easy题,不难,但是会有一些小坑。本题只是要求输出最长回文串的长度,并没有要求输出最长字符串,我在第一次做这个题目时看错了要求,绞尽脑汁。。。后来才看到题目要求是输出最长的长度???回文串就是正着读,倒着读都是一样的字符串。因此,出现偶数次直接满足要求,奇数可以考虑放中间也能符合要求

2020-06-05 17:47:41 153 1

原创 字符串----找到最大相同子串(仅有一个最大相同子串的情况)

题目:给定两个字符串,找出两个字符串的最大相同子串注:substring(beginIndex,endIndex):子串的结束位置是开区间,也就是不包含这个位置的字符!!!比如:str1 = “abcwerthelloyuiodefabcdef”;str2 = “cvhellobnm”提示:将短的那个串进行长度依次递减的子串与较长的串比较。思路:将最小子串依次递减和最长的串进行比较,每次递减1位,然后对递减1位后的字符串进行左右移动对比;如果没有相同子串则继续往下递减1位。难点在于,如何左右移动

2020-06-05 15:15:33 519

原创 字符串---判断一个字符串在另一个字符串出现的次数

题目:获取一个字符串在另一个字符串中出现的次数。比如:获取“ab”在 “abkkcadkabkebfkaabkskab” 中出现的次数 public int getCount(String mainStr,String subStr){ int mainLength = mainStr.length(); int subLength = subStr.length(); int count = 0; int index = 0;

2020-06-05 13:25:34 687

原创 字符串---反转

1.对字符串进行反转,全部反转使用StringBuffer的reverse函数2.对部分字符串(指定起始位置)进行反转方法一:将字符串转化为char[]数组例如:将一个字符串进行反转。将字符串中指定部分进行反转。比如“abcdefg”反转为”abfedcg” 方式一:转换为char[] public String reverse(String str,int startIndex,int endIndex){ if(str != null){ c

2020-06-05 13:23:19 159

原创 剑指Offer---50.数组中的重复数字

题目描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。public class Solution { public boolean duplicate(int numbers[],int length,int [] duplication) { boolean

2020-06-04 16:25:45 84

原创 字符串---Leetcode242. 有效的字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只包含小写字母。由于题目中指明只包含小写字母,所以只需要考虑小写字母的情况。解法一:题目要求是判断 字符串t 是否是字符串 s 的字母异位词,前提条件是字符串t的长度必须等于字符串s的长度。其次,还需要考虑的是字符串中相同

2020-06-04 13:41:34 127

原创 链表---Leetcode83. 删除排序链表中的重复元素

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3暴力解法: class Solution { public ListNode deleteDuplicates(ListNode head) { if (head == null) return head;

2020-06-03 20:51:30 73

原创 链表---Leetcode206. 反转链表

反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULLclass Solution{ public ListNode reverseList(ListNode head){ ListNode prev = null; while(head != null){ ListNode cur

2020-06-03 19:23:47 110

原创 链表---Leetcode160. 相交链表

编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:示例:思路:假设A链表在交点之前长度为a,B链表在交点之前的长度为b,链表公共长度为c。所以可以知道有:a+c+b = b+c+a。因此当A链表走到尾之后还没有交点出现就继续从B链表的头开始往下走,B链表操作一样。程序: public class Solution{ public ListNode getIntersectionNode(ListNode headA,ListNode headB){

2020-06-03 18:42:44 155

原创 链表---Leetcode21:归并两个有序链表

题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4这道题的思路暴力解法: public ListNode mergeTwoLists(ListNode l1,ListNode l2){ ListNode dummy = new ListNode(0); ListNode

2020-06-03 18:22:13 106

自动控制原理第五版

考研复习用书 自动控制原理 胡寿松 第五版 电子档

2018-05-29

空空如也

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

TA关注的人

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