自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode279:完全平方数

一、题目描述给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。示例1输入:n = 12输出:3 解释:12 = 4 + 4 + 4示例2输入:n = 13输出:2解释:13 = 4 + 9二、解题思路本题可以使用数学知识来解答:任何正整数都可以拆分成不超过4个数的平方和,所以答案只可能是1,2,3,4如果一个数

2022-05-11 15:47:31 217

原创 LeetCode443:最小基因变化

一、题目描述基因序列可以表示为一条由 8 个字符组成的字符串,其中每个字符都是 ‘A’、‘C’、‘G’ 和 ‘T’ 之一。假设我们需要调查从基因序列 start 变为 end 所发生的基因变化。一次基因变化就意味着这个基因序列中的一个字符发生了变化。例如,“AACCGGTT” --> “AACCGGTA” 就是一次基因变化。另有一个基因库 bank 记录了所有有效的基因变化,只有基因库中的基因才是有效的基因序列。给你两个基因序列 start 和 end ,以及一个基因库 bank ,请你找出

2022-05-09 10:00:00 144

原创 LeetCode162:寻找峰值

一、题目描述峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设 nums[-1] = nums[n] = -∞ 。你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。示例1:输入:nums = [1,2,3,1]输出:2解释:3 是峰值元素,你的函数应该返回其索引 2。示例2:输入:nums = [1,2,1,3,5,6,4]输出:1 或 5 解

2022-05-08 10:00:00 197

原创 LeetCode153:寻找旋转排序数组中的最小值

一、题目描述已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …, a[n-2]] 。给你一个元素值 互不相同 的数

2022-05-07 10:07:43 156

原创 高阶数据结构

一、AVL树1.AVL的定义和特征特征:搜索树&&平衡树搜索树:任取结点,其左孩子.key<其.key<右孩子.key,因此中序遍历是有序的,按照key值顺序大小排列平衡树:结点左子树的高度和结点右子树的高度的高度差的绝对值不超过1平衡因子:bf(node)=H(node.left)-H(node.right)2.AVL的操作步骤①查找如果 key==current.key: 查找到了key,current就是包含了key的结点如果 key<curr

2021-08-28 16:50:54 211

原创 Web知识点汇总

1.servlet1.1 Maven 相关① Maven 是什么?Maven 是⼀个项⽬构建⼯具,它可以实现:外部 jar 的引⽤和管理;打包项⽬;② Maven ⽣命周期clean:清空之前打包的临时⽂件;validate:验证项⽬的正确性和合法性;compile:编译项⽬;test:执⾏项⽬中的单元测试;package:打包(重要);verify:执⾏集成测试;install:将当前项⽬部署到本地路径,给其他项⽬使⽤。site:⽣成当前⽹站的报告;deploy:将当前

2021-08-09 11:42:36 139

原创 MySQL知识点汇总

一、MySQL基础①和数据库相关的操作查询数据库:show databases;新建数据库:create database if not exists db_name character set utf8mb4;使⽤数据库:use db_name;删除数据库:drop database db_name;②类型相关时间:datetime整数:int布尔:boolean字符串:varchar⽂本:text超⼤⽂本:longtext⾦额: decimal③表相关的操作查看所

2021-07-23 21:05:04 135 7

原创 JVM(JAVA虚拟机)

一、JVM布局堆(线程共享)new object()所有的对象都是存在此区域,此区域也是JVM中最大的一块区域,JVM垃圾回收站就是针对此区域堆会被划分为:新生代:第一次创建的对象都会分配到此区域(a)Eden:80%的内存(b)S0:10%的内存(c)S1:10%的内存老年代:经历了一定的垃圾回收之后,依然存活下来的对象会移动到老年代;大对象在创建时也会直接进入老年代。HotSpot的默认执行次数是15次,经历15次GC就会被移动到老年代为什么大对象会直接进入老年代? 核心原因是因

2021-06-05 17:14:34 60 1

原创 那些关于线程你不知道的事

线程池的优点: 1.避免频繁创建和消耗所带来的性能开销 2.可以优化的拒绝任务 3.更多的功能,可以执行定时任务线程池的七种创建方式:1.创建固定的线程池(任务数去向无限大)2.创建带缓存的线程池(根据任务的数量生成对应的线程数,适用于短期大量任务)3.创建可以执行定时任务的线程池4.创建单个可执行的定时任务的线程池5.创建单个线程池(a.频繁的创建和消耗 b.更好的分配和执行任务,可以将任务存放到任务队列)6.根据当前的工作环境(cpu、任务量)生成对应的线程池;7.Thr

2021-05-30 17:44:35 350

原创 教你在Linux上搭建Java Web 环境

一、安装 Java 环境查看所有的 Java 安装包yum list java*安装:yum -y install java-1.8.0-openjdk*卸载 Java 1.8 相关的软件包卸载使⽤ yum -y remove java-1.8.0-openjdk*二、安装 MySQL执⾏以下命令,下载并安装MySQL官⽅的Yum Repository。1 wget http://dev.mysql.com/get/mysql57-community-release-el7-10

2021-05-12 09:39:28 149 4

原创 一文读懂TCP/IP四层模型

4.应用层:和程序相关的一层3.传输层:负责数据从发送端到接收端3.1 端口号分类知名端口号:0-1023ftp:21 SSH:22 Telnet:23 DNS:53 http:80 HTTPS:443 MYSQL:3306 Tomcat:8080动态端口号:1024-65535注: 一个端口号不可以被多个程序使用而一个程序可以有多个端口号3.2 UDP协议UDP协议端格式16位UDP长度=UDP头部长度(8个字节)+数据长度UDP一个包的最大理论长度=2^16

2021-04-20 21:43:55 814 3

原创 剑指offer18:删除链表的节点

一、题目描述给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。示例:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9 二、解题思路三、代码实现四、运行结果...

2021-04-07 11:34:52 132 13

原创 剑指offer24:链表的反转

一、题目描述定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL二、解题思路要实现链表的反转时,将当前节点的next 指针改为指向前一个节点,由于当前节点没有引用其前一个节点,因此必须事先存储当前节点的前一个节点。而在更改引用之前,还需要存储当前节点的下一个节点,不然无法实现遍历链表,最后返回新的头引用。三、代码实现

2021-04-06 11:39:04 1168 3

原创 Web项目配置文件

1.web.xml配置文件<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee

2021-04-05 11:25:34 421 4

原创 web入门相关知识点

一、htmlHTML 不是一门编程语言,而是一种用来告知浏览器如何组织页面的标记语言。HTML 可复杂、可简单,一切取决于开发者。它由一系列的元素(elements)组成,这些元素可以用来包围不同部分的内容,使其以某种方式呈现或者工作。 一对标签( tags)可以为一段文字或者一张图片添加超链接,将文字设置为斜体,改变字号,等等。常见元素介绍标题: <h1> 到<h6>段落:<p>列表:无序列表(Unordered Lists): <ul>有序列

2021-04-03 23:41:14 138 1

原创 剑指offer22:链表中倒数第K个节点

一、题目描述输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。二、解题思路思路一:1.统计出链表的长度,记为n2.设置一个指针,使其先走(n-k)步,即可找到第K个节点思路二(双指针):1.设置双指针slow和fast,使其都在head处2.让fast先走k步3.让slow和fast同时向后一

2021-03-30 16:13:12 2419 7

原创 剑指offer35:复杂链表的复制

一、题目描述复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null,具体结构如下图所示:二、解题思路1.在原来每个节点之后复制一个和前驱节点相同的新的节点2.为当前链表每一个新的节点的random属性复制3.将新建的节点拆出来组成一个新的链表,将原来的链表拆出来还原为原来的链表三、代码/*// Definition for a Node.class Node { int val;

2021-03-29 11:26:56 96

原创 浏览器输入一个http协议的url,如何定位服务资源?

一、认识url由上图可以很清楚的看出url的构成,首先可以看出是那种协议(HTTP或者HTTPS等),接着会进行登录信息的判断,这里根据使用的GET或POST方法,来决定是否在URL上显示用户相关信息,(GET方法在URL中显示用户的相关信息,POST方法反之)。接着是服务器地址加端口号,服务器地址必须得是正确的,端口号可以不写,如果不写代表着使用默认的端口号,接着加载指定路径下的文件(html、.css、.js…),最后是查询字符串和片段标识符。二、请求过程1.域名解析首先浏览器搜索自己的DNS

2021-03-28 20:46:09 376

原创 Java-图书管理系统

利用前面所学的知识点:类,抽象类,封装,继承,多态,接口等进行的一个简单图书管理系统的编写。一、项目需求1.实现简单的登录2.管理端要实现的功能:①查阅书籍②增加书籍③删除书籍④展示书籍列表⑤退出系统3.用户端要实现的功能:①查询书籍②借阅书籍③归还书籍④退出系统二、类的设计2.1 图书相关的类先创建一个包,命名为book接着在这个包下创建Book类,用来表示一本书:public class Book { private String name; priv

2021-01-20 16:42:30 377 3

原创 Java基础-面向对象三大特性

一、封装1. 概念将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。2. 优点类的使用者根本不需要知道, 也不需要关注一个类都有哪些 private 的成员. 从而让类调用者以更低的成本来使用类.3.使用方法使用 private 封装属性, 并提供 public 方法供类的调用者使用.class Person { private String name;//实例成员变量 private int age; public vo

2021-01-19 22:04:36 105

原创 Java基础-理解抽象类和接口

一、抽象类class Shape { public void draw() { }}class Rect extends Shape{ @Override public void draw() { System.out.println("♦"); }}class Circle extends Shape { @Override public void draw() { System.out.println

2021-01-17 16:55:09 92

原创 Java基础-类和对象

JAVA是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。面向对象注重的是对象,也就是参与过程所涉及到的主体。是通过逻辑将一个个功能实现连接起来。类与对象的概念你可以理解为:类就是一类对象的统称。对象就是这一类具体化的一个实例。即类为模板,而对象为一个一个的实例化。一、类和类的实例化class Person { public int age;//成员属性 实例变量 public String name; public String sex; public

2020-12-28 13:56:41 105 3

原创 Java基础-逻辑控制

1.顺序结构顺序结构就是按照输入的顺序得到对应输出的结果,例如:System.out.println("haha");System.out.println("xixi");System.out.println("gaga");输出结果为:hahaxixigaga当改变输入顺序时,输出的结果也会有相应的变化,例如:System.out.println("xix");System.out.println("gaga");System.out.println("haha");输出结果

2020-12-06 11:19:53 77

原创 Java基础-基本数据类型

1.整形变量基本语法格式int 变量名 = 初始值代码示例:int a = 10; //定义一个整型变量注意事项:int 表示变量的类型是一个整型.变量名是变量的标识. 后续都是通过这个名字来使用变量.Java 中 = 表示赋值(和数学不一样), 意思是给变量设置一个初始值.初始化操作是可选的, 但是建议创建变量的时候都显式初始化.最后不要忘记分号, 否则会编译失败.// 表示注释. 注释作为代码的解释说明部分, 不参与编译运行.在 Java 中, 一个 int 变量占 4

2020-12-03 11:43:34 359

原创 C语言-文件翻译的过程

从一个C语言的源文件到可执行程序的过程:编译器通过编译将源文件转换为目标文件,然后通过连接器(linker)将目标文件捆绑在一起,形成一个单一而完整的可执行程序。编译本身又分别有以下几个阶段,①预处理阶段②编译③汇编④链接;1.预处理翻译过程所要做的第一步就是头文件展开,把stdio.h里的文件全部展开,这个过程虽然我们看不到但是确真实存在,在这个过程中,编译器还会进行宏替换,把我们注释掉的内容完全抹去。我们可以在linux下观察到各个过程。首先我们先编辑一个test.c文件#include &

2020-12-01 16:57:47 476

原创 C语言之文件操作

文件的定义磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件(包括源程序文件(.c),目标文件(.obj),可执行程序(.exe))、数据文件(文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件)文件的类型求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件。数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件。文件的打开和关闭文件在读写之前应该先

2020-11-24 21:17:09 97

原创 C语言之结构体相关知识

1.结构体变量的定义和初始化结构体变量的定义struct point{ int x; int y;}p1; //声明类型的同时定义变量p1struct point p2; //定义结构体变量p2结构体变量的初始化struct point={x,y}; //定义变量的同时赋值struct Stu{ char name[20]; int age;};struct Stu s={"zhangsan",20};2.结构体变量的大小计算结构体大小的计算涉及到

2020-10-30 16:31:20 174

原创 字符串函数的模拟实现

1.strlen函数的模拟实现该函数求出一个字符串的长度,结束的标志为’\0’①函数实现//strlen的模拟实现#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int my_strlen(const char* str){ assert(str); int count = 0; while (*str) { count++; str++; } return count;}int main(){

2020-10-28 21:23:13 100

原创 sizeof和strlen的区别是什么?

一、定义1、sizeof是C语言中的一个运算符,它的作用是计算一个变量或者一个类型所占空间的大小。2、strlen是C语言中的库函数,所在头文件为#include <string.h>。它函数原型为unsigned int strlen(const char *p); 其中p为指定的字符串。注:strlen只能用char *作为参数,它求的是字符串的实际长度,当遇到第一个’\0’结束。如果参数不是char *类型,将会产生编译警告或报错。二、举例例1.#include <s

2020-10-14 20:25:55 214

原创 数据在内存中的存储

一、数据类型1.内置类型整形家族: char short int longchar: signed char 把最高位当成符号位unsigned char 不会把最高位当成符号位char是signed char还是 unsigned char 取决于编译器short:signed shortunsigned charshort是signed shortint 和long与short一样浮点数家族: float double2.自定义类型数组类型

2020-10-11 13:25:45 146

原创 用C语言实现扫雷游戏

扫雷小游戏首先从main函数分析游戏的整体框架:int main(){ int input = 0; srand((unsigned int)time(NULL)); do { menu(); printf("请选择:》"); scanf("%d",&input); switch(input) { case 1: game(); break; case 0: printf("退出游戏!\n"); break; default:

2020-09-09 14:08:40 146

原创 用C语言解决:青蛙跳台阶问题

问题描述一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。输入输入一个整数,作为台阶的数目。输出输出跳上n个台阶有多少种跳法。分析设f(n)表示青蛙跳上n级台阶的跳法数。当只有一个台阶时,即n = 1时, 只有1中跳法;当n = 2时,有2种跳法;当n = 3 时,有3种跳法;当n很大时,青蛙在最后一步跳到第n级台阶时,有两种情况:一种是青蛙在第n-1个台阶跳一个台阶,那么青蛙完成前面n-1个台阶,就有f(n-1)种跳法,这是一个子问题

2020-09-05 09:32:56 1278

原创 用C语言解决:汉诺塔问题

问题描述汉诺塔 ( 又称河内塔 ) 问题是源于印度一个古老传说的益智玩具 。 古代有一个梵塔 , 塔内个座 A 、 B 、 C , A 座上有 64 个盘子 , 盘子大小不等 , 大的在下 , 小的在上 。 有一个和尚想把64个盘子从 A 座移到 C座 , 但每次只能允许移动一个盘子,并且在移动过程中 ,3 个座上的盘子终保持大盘在下,小盘在上,在移动过程中可以利用 B 座。输入输入一个整数,作为盘子的数目输出输出每一个盘子的移动过程每次的移动记录被记录为A->B、A->C、B-&g

2020-08-30 16:04:53 366

原创 用C语言实习三子棋游戏

## C语言:三子棋游戏首先,我们从main函数开始写起,分析游戏的整体逻辑int main(){ int input=0; srand((unsigned int)time(NULL)); do { menu(); printf("请选择:"); scanf("%d",&input); switch(input) { case 1: game(); break; case 0: printf("退出游戏\n"); break;

2020-08-29 13:43:22 189

空空如也

空空如也

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

TA关注的人

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