自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 归并排序 java实现

排序思路:先分组,分成一个个小的数组,然后再组合,组合的过程中排序,整个归并的过程中使用递归

2022-06-05 15:30:59 106

原创 快速排序 java实现

快排的思想:给定左下标,右下标,和中间节点,通过交换,使左边都小于中间,右边都大于中间,然后让左边递归,划分出左右下标,中间节点,右边同样如此,达到整体的排序效果代码思路:记录左,右下标,中间节点,当左小于右时,就一直进行判断,如果左边小于中间,那就让下标加1直到大于中间,如果右边大于中间,就让下标一直减1直到小于中间,此时已经跳出了判断,目前的左右下标都是不符合条件的数,让这两个数交换。当左等于中间时,让右-1,当右等于中间时,让左+1,这是为了后续递归最后直到左下标>=右下标,一轮交换结束,此时在中间左

2022-06-05 10:49:58 93

原创 希尔排序 java实现

先说思路先把数组分成一个个的小的数组,在数组内排序后,在划分较大一点的数组,在数组内再排序,最后成为一个数组希尔的目的是防止插入排序的最后是最小的数,要移动全部的数组导致的浪费,所以尽可能的让每个小组的小数在前面,这样移动的时候不至于移动太多次希尔有两种实现方式1.交换法 不推荐时间消耗极高问题在于每次比较只要满足条件都会交换,浪费时间2。移位法 推荐实质是先分组再插入,记录这个数字,然后进行比较,如果不满足就依次覆盖,最后满足或者跳出循环后再把记录的数字赋值时间消耗大大降低

2022-06-02 18:12:27 119

原创 插入排序 java实现

先让第一个数自成数组,然后让第二个数加入到这个数组当中,按照大小排序,然后是第三个,第四个数,循环直到所有的数遍历完成,注意边界条件,迭代的时候从下标为1的数开始,每迭代一次,下标都加1,注意数组越界和边界问题与选择排序的区别选择是假定第一个为最小,然后每轮循环都是与后面的进行比较插入是让第一个自成数组,后面的数组往进插入 时间上不如选择快

2022-06-02 14:47:48 63

原创 选择排序 java实现

假定第一个数是最小,然后依次和后面的比较,一轮循环中找出最小的那个,交换,如此循环直到全部的数组都排序完,注意边界,只需要循环length-1次选择与冒泡的区别和时间关系当数量很大的时候,冒泡消耗的时间更多因为冒泡一轮循环可能会有多次交换,比较只要大于,那就交换选择不然,选择是记录下标,等全部完毕后才进行交换,只交换一次,如果下标没有变动,则不交换,时间上来说选择比冒泡短的很多

2022-06-01 23:12:47 45

原创 冒泡排序及优化

很简单的排序算法,如果相邻的两个数中,第一个比第二个大,那么交换,否则不交换不管交换与否,继续往下走,将一轮数据都比较完毕,能保证最大的数在最后的位置上然后继续第二轮循环,但是不用和最后的比较如果整整一轮都没有交换,则已经是排好序,用flag判断,并跳出循环没什么说的了 注意边界条件

2022-06-01 19:50:29 34

原创 swagger问题

从下午3点弄到7点半才算解决太痛了下面说详细流程为了使用swagger 创建了一个common模块,service_base模块用于使用swagger,然后pom中引入相关依赖为了让启动类能够扫描到swagger所在的包引入如下注解注意我这样的写法是有问题的如果只是com,与我service路径重复,会报错后把com改为如下所示只单独扫描swagger所在的包即将问题解决痛,太痛了...

2022-05-24 19:41:11 71

原创 mybatisplus实现乐观锁

先在数据库中添加version字段在config类中添加插件,同时也把mapperscan注解移到这里@Configuration@MapperScan("com.mpdemo1010.mapper")public class MpConfig { /** * 乐观锁插件 */ @Bean public OptimisticLockerInterceptor optimisticLockerInterceptor() { retu

2022-05-23 20:03:29 67

原创 mybatisplus实现自动填充修改时间的操作

1.先在数据库中加两个字段2.在实体类中加上这两个属性,并添加如下注解 @TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime;注意驼峰规范3.创建一个类,实现接口MetaObjectHandler,并实现其中的两个方法,别忘了将这个类注入到spring

2022-05-23 19:16:51 888

原创 旋转链表 链表

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。示例 1:输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3]解法:想让最后的指针指向头结点,变成环形链表,期间记录链表长度len。然后循环len -(k % len)次,比如长度5,k为2,那就是直接后移3个节点最后当temp.next指向要指的节点后,让一个新的节点引用,然后断掉temp.next取消环代码如下/** * Definition for si

2022-05-21 22:07:06 66

原创 双向链表按顺序添加结点

与单向链表差不多,拿过来改改就行要注意的点,如果前面的数都比要添加的小,也就是要插入到最后,正常是找不到的,所以加一个条件,如果temp.next为null了,就让其直接加在链表的末尾,与单向链表不同的是:需要让待加入的节点的per指向temp代码: //按顺序添加结点 public void addByOrder(HeroNode2 heroNode){ HeroNode2 temp = head; boolean flag = false;

2022-05-21 10:28:14 240

原创 合并两个有序的单链表,合并后链表亦然有序

独立完成,很开心解法:先创建一个合并后的链表tlist,创建一个节点cur指向这个链表list,再分别用两个节点temp1,temp2指向这两个传过来的有序链表用while循环,只要两个链表中有任意一个为空,就跳出循环循环中将小的节点加入list,然后再更改list的next和temp的next往下指跳出循环后判断谁有剩余就挂到list后面,输出代码如下 public static void towList(heroNode node1,heroNode node2){

2022-05-20 16:07:52 411

原创 逆序打印链表

与上题不同的是,不要反转链表,只做输出即可解法:循环入栈,循环出栈,over~ //逆序打印链表 public static void reversePrint(heroNode head){ if (head.next == null){ return; } Stack<heroNode> stack = new Stack<>(); heroNode cur = hea

2022-05-20 16:03:49 168

原创 单链表的反转

好难 终于想明白了最开始是头结点指1,1指2,2指3,3指4现在新创建了一个反转链表reverse用于存放数据先让当前节点的next指向reverse的next,第一步就是结点1原本指向节点2,现在指向null第二步让reverse的next指向当前节点现在是reverse的next指向了节点1,节点1指向空再往后走让当前节点(节点2)的next指向reverse的next因为reverse的next不指向空了,指向节点1,现在构成了:节点2的next指向了节点1现在

2022-05-20 11:41:56 62

原创 算法 查找单链表中的倒数第K个节点

给出链表头和下标,查询节点上的内容思路是:先遍历链表获得长度size,用size - index下标获得倒数第k个节点比如链表长度为5,index为1,查找倒数第1个,那就用5-1 = 4,第四个元素即为倒数第一个节点,如果index为5,查找倒数第5个,5-5 = 0,就是第0个元素 //查找单链表中的倒数第K个节点 public static heroNode lastNode(heroNode head, int index){ if (head.next

2022-05-20 09:58:03 572

原创 算法 统计单链表节点的有效个数

统计单链表节点的有效个数 public static int getLength(heroNode head){ if (head.next == null){ return 0; } int length = 0; heroNode cur = head.next; while (cur != null){ length++; cur = c.

2022-05-20 09:51:47 221

原创 单向链表指针问题

今天思考单向链表如何添加的问题时,一直纠结其原理,先上代码//定义hearNode,每个HearNode对象就是一个节点class heroNode{ public int no; public String name; public String nickName; public heroNode next; //指向下个节点 @Override public String toString() { return "heroNode

2022-05-19 21:38:29 134

原创 leetcode day1-6

从数组中移除最大值和最小值给你一个下标从 0 开始的数组 nums ,数组由若干 互不相同 的整数组成。nums 中有一个值最小的元素和一个值最大的元素。分别称为 最小值 和 最大值 。你的目标是从数组中移除这两个元素。一次 删除 操作定义为从数组的 前面 移除一个元素或从数组的 后面 移除一个元素。返回将数组中最小值和最大值 都 移除需要的最小删除次数。示例 1:输入:nums = [2,10,7,5,4,1,8,6]输出:5解释:数组中的最小元素是 nums[5] ,

2022-05-17 21:16:22 57

原创 leetcode day1-5

三个数的最大乘积给你一个整型数组nums,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入:nums = [1,2,3]输出:6这题的难点在于负数的存在,如果有两个负数且绝对值比正数大,那么负数更合适,边界条件最开始没考虑到解法:先排序,再返回值,用了Math函数class Solution { public int maximumProduct(int[] nums) { int n = nums.length; ..

2022-05-17 11:41:20 35

原创 leetcode day1-4

第三大的数给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。示例 1:输入:[3, 2, 1]输出:1解释:第三大的数是 1 。个人解法:先对数组排序,然后将初始值设为最后一个数,从后往前循环遍历,如果比这个数字小,就赋值,让flag+1,如果flag大于三就跳出,如果小于3就返回最大的数class Solution { public int thirdMax(int[] nums) { Arrays.sort(num.

2022-05-17 11:25:58 27

原创 leetcode dat1-3

寻找旋转排序数组中的最小值已知一个长度为 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-17 09:56:31 27

原创 leetcode day1-2

记录

2022-05-17 09:42:14 148

原创 leetcode day1-1

自我记录

2022-05-17 09:29:21 127

空空如也

空空如也

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

TA关注的人

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