自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

奋斗

奋斗

  • 博客(82)
  • 收藏
  • 关注

原创 String.split(reg,limit)的用法

String的split的用法

2022-08-16 21:01:35 318 1

原创 完全背包如何考虑排列问题

知道0-1背包完全背包,遍历顺序的时候,如何才能考虑排列的问题

2022-06-22 17:17:19 541

原创 如何等概率的返回已经遍历到的节点?

蓄水池

2022-06-13 15:28:59 259

原创 玩两道广度优先搜索算法

了解bfs框架,以及思想,注意事项等

2022-06-09 15:03:19 276 1

原创 回溯之N皇后(选择列表是二维的,全排列的选择列表是一维的)

最好是先理解全排列的回溯算法怎么用,再来看这个选择列表是二维情况时的回溯算法,回溯算法的本质就是穷举,希望结合全排列和N皇后问题,能对回溯算法有一个较为清晰的认识,个人认为回溯算法的难点在于怎么去维护路径和选择列表...

2022-06-04 13:09:59 147

原创 理解回溯算法的一道基础题之全排列问题

回溯算法的本质就是穷举

2022-06-04 11:47:30 206

原创 如何利用归并排序的merge

题干:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。思路:首先要明确升序数组就没有所谓的逆序对,降序数组就是任意抽取两个元素都构成逆序对,换句话说,数完逆序对,我把可以把数过的区间进行排序,后续在统计别的逆序对对数的时候就可以避免重复计算逆序对有两种数法,一种是数这个数后面有多少个元素比自己小,那针对这个位置的逆序对的对数就是多少个,反过来,也可以数一个元素前面有多少个元素比自己大,那就针对该位置有多少个逆序对,之所以不同时数前面

2022-06-02 10:55:06 108

原创 验证二叉搜索性的递归解法

题干:给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。思路:本题的直观想法可能上来就是站在一个节点上看这个节点的值是不是比它的左子树的节点值更大,并且还要比它的右子树的节点值更小,如果二者都满足,则说明,当前节点检查完毕,那就可能写出错误代码:如上图,虽然每个节点的值都能在遍历过程中通过检查,但是节点值为5的节点,显然比它的右子树中的

2022-06-01 16:25:03 159

原创 了解JavaScript的基本使用

了解JavaScript的基本使用书写格式内嵌式将js代码写在script标签当中行内式就是把js代码作为某个属性的值进行赋予,如:<button onclick="alert('hello')">按钮</button>即可实现,点击按钮,就可以弹窗说hello将js代码写进单独的.js文件中,通过script标签的src属性进行引用要区别于css代码的引用:通过link标签的href属性进行引用要注意的是,通过script标签中的src属性引用js

2022-05-29 17:26:03 474

原创 HTML+CSS(基础)

HTML+CSSHTML决定页面的结构,主要就是学习一些标签注释:<!-- 内容 -->标题标签<h3>三级标题</h3>当然同理还有1-6级标题段落标签<p>段落标签</p>(此时的首行并未缩进2个字符,这个功能需要借助于CSS)换行标签<br>在html中只有遇到块级元素才会换行(没弹性布局的情况下),此时就需要我们手动换行格式化标签<strong>这是加粗&

2022-05-28 19:34:44 2110

原创 带权重的随机选择算法

带权重的随机选择算法https://leetcode.cn/problems/random-pick-with-weight/题干:给你一个 下标从 0 开始 的正整数数组 w ,其中 w[i] 代表第 i 个下标的权重。请你实现一个函数 pickIndex ,它可以 随机地 从范围 [0, w.length - 1] 内(含 0 和 w.length - 1)选出并返回一个下标。选取下标 i 的 概率 为 w[i] / sum(w) 。例如,对于 w = [1, 3],挑选下标 0 的概

2022-05-27 16:10:31 965

原创 差分数组算法

差分数组适用于对数组某些区间元素频繁的增减问题如果是对数组某些区间频繁查询,那就是前缀和问题对于差分数组问题,可以定死一个类专门对数组作差分如:对上述数组做这些操作:a:[1,3]每个元素加2b:[2,4]每个元素减3…如果暴力求解是不一定能过的.写一个专门做差分的类:class Difference{ //差分数组 private int[] diff; //根据给定的数组构造初始化一个差分数组 public Differen

2022-05-26 09:14:55 531

原创 文件操作和IO

文件操作和IO什么是文件📦平时所说的文件一般都是值存储在硬盘上的普通文件,形如:.txt/.jpg…广义的说文件的概念,不仅仅包含普通文件,还可以包含目录,甚至是操作系统层面中用文件来描述一些其他的硬件设备或者软件资源比如:网卡,当我们把网卡这样的硬件设备也抽象成一个文件,就可以简化开发显示器键盘这些设备也都可以视作文件文件(普通文件)的分类🌊二进制文件:存储的是字节数据文本文件:存储的是字符,本质存的还是字节数据,只不过若干字节能够组成字符文件的目录结构🏷在计算机中

2022-05-20 17:01:31 512 6

原创 滑动窗口解决最小覆盖子串

滑动窗口解决最小覆盖子串https://leetcode.cn/problems/minimum-window-substring/题干:难度:hard给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。滑动窗口的思想其实就是双指针的配合使用本题我们将索引[left,right)所包含的区间定义为窗口将left和right都初始化为0,由于左闭右开,此时窗口中是不包含任何的字符的,right

2022-05-11 11:07:42 180

原创 反转链表+反转前N个链表+反转指定索引下的局部链表

反转链表+反转前N个链表+反转指定索引下的局部链表反转链表https://leetcode.cn/problems/reverse-linked-list/迭代式算法:(不作过多赘述)class Solution { public ListNode reverseList(ListNode head) { if(head==null||head.next==null) return head; ListNode prev=null; Lis

2022-05-10 10:02:41 375 9

原创 前缀和(算法)

前缀和(算法)一维:https://leetcode.cn/problems/range-sum-query-immutable/二维:https://leetcode.cn/problems/range-sum-query-2d-immutable/对一维的那个题:一般人的解法:class NumArray { private int[] arr; public NumArray(int[] nums) { arr=nums; } pu

2022-05-09 20:58:48 348

原创 最大子数组和

最大子数组和https://leetcode.cn/problems/maximum-subarray/dp本题旨在求最值,可以考虑使用dpdp难点在于如何确定状态及状态转移我们可以利用数学归纳的思想(如何利用dp[0…i-1]推导出dp[i])那首先要明确dp[i]是什么含义,这里可以先考虑将dp[i]直接理解为前i个子数组的最大子串和,这样定义状态时,此时dp[i]进行返回就是所求结果吗?或者可以问自己:这样定义状态可以得到合适的状态转移方程吗?答案是否定的;因为我们

2022-05-09 19:53:55 368

原创 最长递增子序列

最长递增子序列子序列不一定连续,子串一定连续dphttps://leetcode.cn/problems/longest-increasing-subsequence/明确状态:即原问题和子问题中一直发生变化的量,此处就是递增子序列的长度呗明确选择:dp[i]可以选择的前面一部分就是dp[0…i-1]明确base case:dp[i]显然至少为1,明确dp函数/数组的含义:dp[i]表示以nums[i]做结尾的子序列的最大长度,那整个dp函数的结果不就是返回dp[]中的最大值吗明确状态

2022-05-09 16:06:26 157

原创 凑零钱问题(dp)

凑零钱问题https://leetcode.cn/problems/coin-change/动规思路:明确最基本的情况:amount==0或者amount<0时得结果都是显而易见的明确状态:即原问题和子问题中会发生变化的量,此处amount显然是我们要找的状态明确选择:即什么样的行为会导致状态发生变化?此处正是我们去选择不同面值的硬币会导致状态发生变化明确dp函数的定义,该函数一定是要包含状态的,否则没法递归,其他变量视情况而定暴力穷举时间复杂度不过关,考虑备忘录做剪枝法

2022-05-09 11:19:15 373

原创 MySQL中的事务相关属性以及JDBC编程

MySQL中的事务相关属性以及JDBC编程事务🌛出现的原因可以简言之:有些事情天然就应该要么一次性做完,要么就别做,比如zfb转账,账户A扣款必须伴随着账户B的余额增加,如果这两件事被割离开来,显然是不合理的.所以说,一个事务的意思:将若干个独立的操作打包成一个整体.好处:事务中的若干操作如果只是执行了一部分,后续出现了一些原因导致剩余的操作不可继续执行,那此时就可以回滚,就好像什么也没发生过一样.回滚的实现主要依托于日志和数据库内置的一些表来完成的.事务的基本特性☔️原子性,上述的案例所描述的

2022-04-16 22:08:24 1095 17

原创 多线程常见案例

多线程常见案例实现一个线程安全的单例模式🥇单例模式的概念就是代码中的某个类只有有一个实例,不能有多个实际开发中常见且有用,且有些概念天生就应该是单例的,比如jdbc编程中的数据源DataSource就应该只有一个.实际的单例模式有两个饿汉模式(相对较为着急的就把单例给构造好了)懒汉模式(只有在必要的时候才会把这个单例进行构造)具体:饿汉(自身已经线程安全):class MySingleton1{ //1.加载类时就已经将单例进行构造,所以说比较着急,所以叫饿汉

2022-04-11 10:54:28 1445 7

原创 几张图解释清楚死锁+wait和notify的搭配使用

几张图解释清楚死锁+wait和notify的搭配使用死锁🚕synchronized在上一篇博客中进行介绍时,提到,一旦一个对象被上锁,那别的线程就无法再给这个对象上锁,但如果这个线程是自身呢?也就是说一个线程尝试给同一个对象上锁两次会出现什么结果?比如见下面的代码;class Counter1{ private int count=0; public synchronized void increase1(){ this.count++; } pu

2022-04-10 17:58:43 888

原创 线程状态+线程安全问题+synchronized的用法

多线程安全问题,线程状态细化,synchronized的用法

2022-04-10 16:27:56 3780 6

原创 初见多线程并发编程

初见多线程并发编程什么是进程?🥇我们每次打开一个软件其实都是打开了一个exe后缀的文件,这些文件叫做可执行文件,这些可执行文件被双击之前都是静静的躺在硬盘上,此时的他们对我们的系统没有任何影响,一旦进行了双击的操作,操作系统就会把这个.exe加载到内存中,并且执行.exe内部的一些指令(.exe文件内部就存储了很多这个程序对应的二进制指令)上述运行起来的可执行程序,就称为"进程".进程是操作系统进行资源分配的最基本单位操作系统是如何管理进程的?👆宏观上为2步:描述进程组织进程描述进

2022-04-07 11:26:43 336 6

原创 简单认识计算机是如何工作的

计算机是如何工作的冯诺依曼体系🌊cpu:中央处理器:主要进行算术运算和逻辑判断存储器:分为内存和外存,内存就是所谓的RAM,而外存就比如硬盘输入设备:用户给计算机发号指令的设备,如键盘输出设备:计算机给用户汇报结果的设备,比如屏幕针对存储空间:硬盘>内存>>cpu针对数据的访问速度:cpu>>内存>硬盘cpu的基本工作流程📦电子开关(电磁继电器)🏷初中物理应该都学过,通电导线周围会有磁场,利用这个磁场就可以将开关进行闭合和打开.基于这个开关的不

2022-04-06 20:34:27 593

原创 力扣 剑指offer11(旋转数组的最小数字)

力扣 剑指offer11(旋转数组的最小数字)题干:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的最小值为 1。注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2],

2022-04-04 17:25:39 844

原创 剑指offer65-不用算术运算符做加法

力扣 剑指offer65(不用算术运算符做加法)题干:写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。示例:输入: a = 1, b = 1输出: 2思路:观察按位"与":如5+6=11可以发现:两个数做按位与时,只有需要进位的二进制位才会为1,没数据或者不用进位的都是0观察按位"异或":如5+6=11可以观察发现:两个数按位异或时:只有对应二进制位有数据且相加不用进位时才会是1,没数据或者有数据相加但要进位时的二进制

2022-03-30 16:31:44 1003

原创 索引及其背后的数据结构(顺带介绍了一下子查询和合并查询)

索引及其背后的数据结构(顺带介绍了一下子查询和合并查询)子查询🌛说白了两个甚至多个sql,非要反人类式的写成一个sql比如说:我想查找张三的的同班同学有哪些正常想法就是:先查出张三的班级是哪个班级select class_id from classes where name='张三';//假设返回1然后根据班级号,把该班级的所有学生进行打印即可select name from student where class_id =1;但是子查询的操作就是:select name from

2022-03-30 14:06:05 1716

原创 约束+表的设计+进阶查询

MySQL的增删查改进阶版(主要是查)数据库约束❓在使用数据库时,对于里面能够存放的数据提出的一些要求和限制,程序员就可以借助约束来更好的校验.常见约束约束类型说明not null指示这一列的数据都不可为nullunique指示这一列的的数据,每一个都是唯一的default指示这一列,如果插入记录时没给数据的话,所设定的默认值primary key主键,相当于not null和unique的结合,下面会介绍使用foreign key外键,使两个表

2022-03-29 16:11:05 616

原创 MySQL的初阶增删查改

数据表的操作🌜MySQL管理数据的方式🚶如图所示,数据库中的数据表又类似于excel表.对于数据表:一个数据库可以有多个数据表,且每个数据表又很多行,每一行称为一条记录,每一行又有很多列,每一列都称为一个字段针对一个数据表,每条记录的字段数量要一致,对整张数据表来说,每一列都必须是同一个类型为了表述字段信息,需要在建表时就指定"表头"表头会指明表格的记录都会有几列,每一列都分别是什么类型,字段名称是什么MySQL中的数据类型🏎数值型数据类型大小说明对应java的类型

2022-03-28 15:23:52 1091 2

原创 简单认识mysql

简单认识MySQLMySQL是什么?❓未涉及数据库时,我们知道持久化存储数据可以使用文件,但这样有什么缺点呢?文件安全性不高文件不利于数据的查询和管理文件不利于存储海量数据文件在程序中并不好控制基于1中文件带来的问题,就有了这么一款软件,叫数据库软件,能够更有效的管理数据,并且数据库还能提供远程服务,被操作的一方就叫服务器,操作方就叫客户端当然数据库软件并非就只有MySQL,还有比如Oracle和SQL server等等数据库分类👶关系型数据库:用二维表格组织数据的数据库

2022-03-27 21:34:50 1107

原创 Lambda表达式

Lambda表达式❓Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口. lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码 块)。 Lambda 表达式(Lambda expression)可以看作是一个匿名函数,基于数学中的λ演算得名,也可称为闭 包(Closure)语法🚶基本语法: (parameters) -> expression 或 (parameters)

2022-03-23 15:57:19 601

原创 反射的理解与使用

反射📦定义🍨Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任 意一个对象,都能够调用它的任意方法和属性,既然能拿到,那么我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制。用途😋在日常的第三方应用开发过程中,经常会遇到某个类的某个成员变量、方法或是属性是私有的或是只对系统应用开放这时候就可以利用Java的反射机制通过反射来获取所需的私有成员或是方法 。用于各种通

2022-03-23 11:14:00 408

原创 内部类相关

内部类相关📄分类类别解释本地内部类定义在方法中的类实例内部类定义在一个类的内部,并且没被static修饰静态内部类相比较于实例内部类而言,多了个static修饰匿名内部类不带名字的内部类,多用于接口的实现类实例内部类🌊或者叫非静态内部类,常规的类和类之间是相互独立的,那使用了非静态内部类之后呢就会出现非静态内部类依赖于外部类对象的情况,因此非静态内部类就和一个普通的类里的成员变量或者方法地位相同,而后者也同样是依赖于外部类对象的引用来进行调用的.

2022-03-22 21:07:25 521

原创 模拟实现二叉搜索树及其性能分析

模拟实现二叉搜索树概念❓二叉搜索树又叫二叉排序树,它或者是一颗空树,或者是具有以下性质的一棵树:一个根若有左子树,则左子树上所有的节点值都比这个根的节点值来的小一个根若有右子树,则右子树上所有节点的值都比这个根的节点值来的大二叉搜索树的任意一棵子树也要满足前述两条要求,也即任何一颗子树也必须是一棵二叉搜索树基本功能🏎增删(较复杂)查改增📦​ 要清楚,在二叉搜索树上新增节点,新节点都是长在没加节点时树的叶子上的,只不过问题在于新节点长在哪个叶子上,所以首当其冲就是找到新叶子

2022-03-22 15:19:26 394

原创 力扣692(前K个高频单词)

力扣692(前k个高频单词)题干给定一个单词列表 words 和一个整数 k ,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序。示例思路第一步:统计每个单词出现的次数(使用map)第二步:使用topK思想将键值对进行topK式存储,之所以要存储键值对,是因为,同次数的单词需要比较字典序的先后来判断谁去谁留,这里有个较容易失误的点:由于是找前k个value值最大的键值对,那按道理是要建立一个小根堆,但有个特殊情况:

2022-03-22 11:09:19 547

原创 力扣771(宝石与石头)

题干给你一个字符串 jewels 代表石头中宝石的类型,另有一个字符串 stones 代表你拥有的石头。 stones 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。字母区分大小写,因此 “a” 和 “A” 是不同类型的石头。示例思路用set可以降重的功能,把宝石集合先弄出来,然后手上拿着一堆石头,一个个与对照宝石库里是不是有这个石头,有,那这个石头就是一个宝石,返回石头堆里的宝石数量即可代码class Solution { public int num

2022-03-22 10:41:09 246

原创 力扣138题(复制带随机指针的链表)

力扣138题(复制带随机指针的链表)题干给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。例如,如果原链表中有 X 和 Y 两个节点,其中 X.r

2022-03-22 10:32:24 115

原创 Map和Set接口的常用功能介绍

Map和Set接口两者的存在意义❓Map和Set是一种专门用来进行搜索的容器,或者说数据结构,其搜索的效率与具体的实例化子类有关,在学习这两个搜索容器之前,我们所熟知的所搜方式比如有:直接遍历查找时间复杂度为O(n),元素越多,遍历就会越慢二分查找时间复杂度为O(logn),并且二分查找之前,数组还必须已经是有序了,那这个限制就比较大了其次上述两种排序,比较适合静态的查找,即在查找过程中最好不要对一份数据进行插入或者删除,但现实是有很多数据时查找的过程中,对数据都会有多多少少的进行

2022-03-22 10:17:28 690

原创 java之泛型

泛型​ 每次创建一个集合,我们都需要指定这个集合里头能放什么元素,而放其他元素就会classcastexception;为了解决这个问题,我们可以创建类型为Object的集合,但是此时虽然我们什么类型都可以放了,但是正由于什么类型都能放,第一:元素会很乱;第二:用指定类型的变量接收集合返回的数据时,我们还需要进行强制类型转换,很麻烦.泛型类❓语法:class 类名 <泛型标识符,泛型标识符...>{ private 泛型标识 变量名; ...}常见的泛型标识:

2022-03-15 16:42:12 953

空空如也

空空如也

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

TA关注的人

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