自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux环境的搭建和创建新用户

一、环境的搭建1.配置java环境1.1安装jdk命令如下:yum -y install java-1.8.0-openjdk*若安装成功,则会出现“完毕”字样。如需要验证是否安装成功:(出现版本号即安装成功)java -version卸载使用:yum -y remove java-1.8.0-openjdk*1.2安装Tomcat(1)下载Tomcat安装包https://tomcat.apache.org/download-80.cgi(2)将其.

2022-05-28 01:30:00 598

原创 Linux的基本使用和程序部署

一.Linux的介绍1.简单了解1.1Linux是什么Linux 是一个操作系统,和 Windows 是 "并列" 的关系.Linux 是世界第一大操作系统了, 安卓系统本质上就是 Linux.(1)服务器领域(2)嵌入式设备(3)移动端Linux 严格意义来说只是一个 "操作系统内核".一个完整的操作系统 = 操作系统内核 + 配套的应用程序.1.2Linux学习内容(1)基础命令Linux 虽然也有图形化界面, 但是在 服务器 / 嵌入式设备上往往都是通过命令行..

2022-05-26 01:06:48 997

原创 顺序表和链表的基础知识

一 线性表(linear list)1.概念:线性表是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构常见的线性表:顺序表、链表、栈、队列、字符串2.性质: 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。...

2022-05-13 10:01:13 806

原创 全网最全Servlet介绍(一)

1.Servlet介绍Servlet 是⼀款⽤来开发 Java Web 的框架。它是基于 Http 协议交换并且运⾏在 Tomcat ⾥的框架技术。Servlet 主要⼯作:1. Servlet 允许编写程序者注册⼀个类, 在 Tomcat 收到某个特定的 HTTP 请求的时候, 执⾏这个类中的⼀些代码.2. 帮助编写程序者解析 HTTP 请求, 编写程序者把 HTTP 请求从⼀个字符串解析成⼀个 HttpRequest 对象.3. 帮助编写程序者构造 HTTP 响应. 只要给指定的 Htt

2022-05-10 09:31:17 1499 1

原创 Maven的介绍和配置

1.Maven的介绍Maven 是⼀个项⽬构建⼯具,创建的项⽬只要遵循 Maven 规范(称为Maven项⽬),即可使⽤Maven 来进⾏:管理 jar 包、编译项⽬,打包项⽬等功能。2.Servlet和Maven的关系Servlet 是框架,要使⽤ Maven 进⾏ jar 包管理和项⽬打包和发布。...

2022-05-09 00:55:56 1198 1

原创 分隔链表问题

1.给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。应当 保留 两个分区中每个节点的初始相对位置。输入:head = [1,4,3,2,5,2], x = 3输出:[1,2,2,4,3,5]示例 2:输入:head = [2,1], x = 2输出:[1,2]class Solution { public ListNode partition(ListNode head, int x.

2022-05-07 19:20:12 328 1

原创 合并两个有序链表

1.将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]解题思路:1.用尾插的方法来合并链表,没有新建节点,是拼接节点。2.先是判断特殊情况,若l1和l2中其中一个为空,直接链接对方链表:例如l1为空,则链接l

2022-05-07 18:15:12 7109 1

原创 回文链表问题

1.给定一个链表的 头节点 head ,请判断其是否为回文链表。如果一个链表是回文,那么链表节点序列从前往后看和从后往前看是相同的。示例 1:输入: head = [1,2,3,3,2,1]输出: true示例 2:输入: head = [1,2]输出: false/** * 回文链表 */public class Num027 { public boolean isPalindrome(ListNode head) { //需要创建一个新...

2022-05-07 17:15:28 600 1

原创 链表中倒数第K个节点

1.输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.解题思路:首先在题目没有告知链表为空时,要先判断边界条件。链表为空或者K为0时返回空。当K大于链表的长度或者小于等

2022-05-06 15:29:52 610 1

原创 链表中的中间节点

1.给定一个头结点为head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next..

2022-05-06 14:49:32 1419 2

原创 反转链表的实现(三种方法)

给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]/** * 反转链表 * 可以用迭代和递归方式来完成反转 */public class Num206 { public ListNode reverseList(ListNode head) { ...

2022-05-06 03:00:00 1386 1

原创 删除排序链表中的重复元素(二)

1.题目描述给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。示例 1:输入:head = [1,2,3,3,4,4,5]输出:[1,2,5]示例 2:输入:head = [1,1,1,2,3]输出:[2,3]解题思路:1. 采用三指针法,并且prev一定指向不重复的节点。2.prev先指向虚拟头节点dummyHead, cur指向头节点, next指向头节点后一位。当next为空时..

2022-05-04 16:44:01 548 1

原创 删除链表中的重复元素

1.删除排序链表中的重复元素给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。示例一:输入:head = [1,1,2]输出:[1,2]示例二:输入:head = [1,1,2,3,3]输出:[1,2,3]解题思路:1.找到多个相邻节点的值是相同的,及是比较prev和cur(prev下一个节点)的节点值的情况。2.找到重复元素后,重复元素保留一次,及保留第一个重复元素,prev指向的是第一个重复节点,删除

2022-05-04 14:44:27 6461 3

原创 移除链表元素

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[]/** * Definition for singly-linked list. * pu

2022-05-03 04:00:00 465 1

原创 动态数组的基本实现(增 删 改 查)

一,动态数组1.数组属性:1.1生成一个动态数组并设置大小://定义属性 //elementData就是具体存储元素的数组 private int[] elementData; //当前动态数组中存储了几个元素 private int size; public DynamicArray(){ this.elementData = new int[10]; }2.数组的增删改查(CRUD)2.1表头,表尾和表中插入元素:

2022-05-02 14:43:41 744 1

原创 时间与空间复杂度

一 . 算法效率算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。二.时间复杂度1.概念:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算

2022-05-02 01:00:00 135 1

原创 全网最全MySQL的增删改查(进阶)

1.什么是表约束?表约束就是在创建表的时候,设计一些表的约束条件,用来保证数据的合法性和数据的正确性。例如一个账号只能绑定一个手机号,那么手机号就不能重复,不能被多个账号绑定使用,所以它应该设置唯一约束。而主键是用来标识数据的,因此它不能为null,也不能为空,所以它需要设置非空约束或(主键约束,主键约束也不能为null)。2.为什么需要表约束?例如法律适用来规范人们的正确行为一样,表约束也是为了规范程序员正确使用表的,但表约束是预先设置的,设置之后就对所有插入和修改立即生效,比如非空约束设置好

2022-05-01 13:56:49 249 1

原创 面向对象编程的三大特效之一:封装

封装 继承 多态是面向对象编程的三大特效目录封装 继承 多态是面向对象编程的三大特效一.封装1.封装的特性:保护性 , 易用性2.关键字3.getter和setter方法4.构造方法5.this关键字5.1this修饰属性5.2this修饰方法5.3this表示当前对象的引用6.代码块1.普通代码块2.构造代码块3.静态代码块4.同步代码块(多线程)7.toString方法8.匿名对象一.封装1.封装的特性:保护性 , ..

2022-04-30 18:16:52 301 1

原创 类和对象介绍

1.面向对象和面向过程1.1面向对象:java c++关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。也就是参与过程所涉及到的主体。是通过逻辑将一个个功能实现连接起来方便开发,一切皆对象,且具有松耦合的特点。1.2面向过程:c 关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。注重的是过程,在整个过程中所涉及的行为,就是功能。所有事情都是一个个独立的方法,性能较高。2.类和对象的介绍2.1类统称:表示一类事物所具有的共同特征与行为。1类...

2022-04-30 00:13:32 130 1

原创 数组的冒泡排序和二分查找

1.冒泡排序:排序思想:(1)从第一个元素开始,每次将当前元素和下一个元素进行比较。(2)比较元素的大小,两两交换。(3)每次一个循环结束,都有一个元素在最终位置。 //冒泡排序 public static void bubbleSort(int[] arr){ //未排序的数组[0....,arr.length-1] for (int i = 0; i < arr.length - 1; i++) { .

2022-04-28 01:00:00 335 1

原创 递归和数组的介绍

1.方法递归 定义:方法自己调用自己的过程叫方法递归。(注意方法的语义) 使用场景:a) 一个大问题可以拆分为若干个子问题。 b) 原问题和子问题除了数据规模不一样外,求解思路完全一样。 c) 存在递归终止条件,即问题的出口。例子:用递归实现5!(1)用逆向思维求解,要求factor(5),先求factor(4) ,以此类推。(2)factor(5) = 5 * fac...

2022-04-27 01:30:00 254 1

原创 递归求解汉诺塔问题

一.问题描述 汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。应该如何操作?代码的实现:public class tower { public static void main(Stri...

2022-04-25 23:21:57 160 1

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

输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \ 3 3 / \4 4...

2022-04-25 00:16:22 3179 1

原创 算法—动态规划简单介绍

1.动态规划的定义:动态规划是分治思想的延伸,通俗一点来说就是大事化小,小事化无的艺术。在将大问题化解为小问题的分治过程中,保存对这些小问题已经处理好的结果,并供后面处理更大规模的问题时直接使用这些结果呢。2.动态规划的特点:(1)把原来的问题分解成了几个相似的子问题。(2)所有的子问题都只需要解决一次。(3)储存子问题的解。3.动态规划的本质: 是对问题状态的定义和状态转移方程的定义(及状态和状态之间的递归关系)4.动态规划问题的考虑角度:(1)状态定义...

2022-04-24 21:05:40 1489 1

原创 全网最全二叉树介绍

1,树型结构1.1概念:树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看 起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。(进行查找和搜索时用)它具有以下的特点: ①有一个特殊的节点,称为根节点,根节点没有前驱节点 ②除根节点外,其余节点被分成M(M > 0)个互不相交的集合T1、T2、......、Tm,其中每一个集合 Ti (1 <= i <= m) 又是一棵与树类似的子树。每棵子树的根节点有且只有一

2022-04-24 20:53:46 1164 1

原创 多线程(一)

1.线程使⽤ 1.1 线程休眠演示打印电影字幕public class App { public static void main(String[] args) throws InterruptedException { String content = "我要你知道,这个世界上有⼀个⼈会永远等着你。⽆论是在什么时候,⽆论你在什么地⽅,反正你知道总会有这样⼀个⼈。"; for (char item : content.toCharArray()) { ...

2022-04-23 22:36:16 91 1

原创 Java解决杨辉三角问题

给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例2:输入: numRows = 1输出: [[1]]解题思路:(1)第n行恰好有n个元素(2)每一行的开头和结尾全是1(3)中间位置元素值为[i,j]=[i-1,j-1]+[i-1,j]例如下面:第.

2022-04-22 11:51:54 801 1

原创 只出现一次的数字

给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。示例 1:输入:nums = [2,2,3,2]输出:3示例 2:输入:nums = [0,1,0,1,0,1,99]输出:99思路:(1)建立一个哈希表,value表示数组中的数组元素,key表示出现的次数。(2)遍历数组,若value出现过,则count + 1;若没有出现过,则count = 1;(3)遍历map集合,找到满足条件的值并输出。

2022-04-22 10:55:56 63 1

原创 贪心算法解决(分糖果问题)

class Solution { public int candy(int[] ratings) { int[] candy = new int[ratings.length]; for (int i = 0; i < candy.length; i++) { candy[i] = 1; } for (int i = 1; i < ratings.length; i++) { ...

2022-04-21 23:59:40 3335 1

原创 根据身高重建队列(贪心算法)

分析:(1) 根据所给的people数组进行排序,按照身高以降序的方式排序,若身高相同则按照k的值进行升序排列。因为高个排在前面会影响后面低个子的k值。(2)把排好的people数组中低个按照k值插入数组的下标为k的地方。class Solution { public int[][] reconstructQueue(int[][] people) { int n = people.length; int m = people[0].length;...

2022-04-21 22:15:17 231 1

原创 枚举和Lambda表达式介绍

1.枚举枚举是在 JDK 1.5 引⼊的,主要是⽤来表示⼀组相同业务的值,⽐如我们要实现卖⻋的程序,我们要定 义⼀组颜⾊来穷举这辆⻋所提供的所有颜⾊,在没有枚举之前,我们是这样实现的:public static int final RED = 1;public static int final GREEN = 2;public static int final BLACK = 3;...

2022-04-21 19:47:44 679 1

原创 全网最全HTML基础

1.HTML结构认识 HTML 标签 ,HTML 代码是由 "标签" 构成的。形如:<body>hello</body>(1).标签名(body)放到<>中.(2).大部分标签成对出现,<body>为开始标签,</body>为结束标签.(3).少数标签只有开始标签, 称为 "单标签".(4).开始标签和结束标签之间, 写的是标签的内容.(hello everyone)(5).开始标签中可能会带有 "属性". id

2022-04-20 19:00:21 5199 2

原创 全网最全栈和队列介绍

1.栈(Stack)定义: 一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈:栈的删除操作叫做出栈。出数据在栈顶核心操作: pop():移除栈顶元素 peek():查看栈顶元素但不删除 push():向...

2022-04-16 11:15:19 251 1

原创 用栈实现队列

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你 只能 使用标准的栈操作 —— 也就是只有push to top,peek/pop from top,siz...

2022-04-15 18:24:18 103 1

原创 用队列实现栈

1.双队列实现栈请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。链接:https://leetcode-cn.com/problems/implement-stack-usin

2022-04-15 17:10:04 213 1

原创 双栈实现最小栈

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin() 获取堆栈中的最小元素。示例 1:输入:["MinStack","push","push","push","getMin","pop","top","getMin".

2022-04-15 15:47:28 355 1

原创 牛客网-NC227

描述给定一个整数数组,数组中有一个数出现了一次,其他数出现了三次,请找出只出现了一次的数。数据范围:数组大小满足 1 \le n \le 10^5 \1≤n≤105 ,数组中每个元素大小满足 -2^{31} \le val \le 2^{31}-1 \−231≤val≤231−1示例1输入:[1]返回值:1示例2输入:[1,2,2,2]返回值:1题解: 首先创建一个Map,遍历数组,利用键值对表示数组中的元素及其出现的次数。如果第一次出现将其的key值设...

2022-04-14 21:41:28 188 1

原创 全网最全JavaSE基础知识1

Java基础数据类型和方法首先Java语言和c++一样是一种面向对象的语言,并且Java中一切皆对象。1.基础数据类型java,c,c++是强类型语言(即定义一个变量一定要规定它的类型)java中的数据类型大体分为八大基本数据类型(都有默认值),如下:数值型:1.整数 byte<short<int<long整型 int(当在类中或者主方法外定义int变量时,默认值为0,且占用4个字节,和操作系统无关,规定8个二进制位bit为一个字节byte)声明变量 int

2022-04-13 22:56:06 555 1

原创 MySQL 安装—Windows 版

MySQL的安装

2022-03-30 20:50:23 901 1

原创 全网最全MySQL表的增删改查

1.CRUD:Create,Retrieve,Update,DeleteCRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。CRUD : Create, Retrieve,Update,Delete.新增数据 查询数据 修改数据 删除数据 注释:在SQL中可以使用“--空格+描述”来表示注释说明 1.1新增(Create) 1.1.1全列添加:给这张表的所有字段都添加内容语法:INSERT [I.

2022-03-29 21:42:48 803 1

空空如也

空空如也

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

TA关注的人

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