自定义博客皮肤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)
  • 收藏
  • 关注

原创 初级算法-最长公共前缀,初级算法-删除链表中的节点

至于分治法和二分法,感觉是可以练一练,不过要是真为了解这题,就算了。第二题删除链表中的节点。第一题最长公共前缀。

2022-07-19 09:22:55 162 1

原创 初级算法-外观数列

初级算法-外观数列

2022-07-05 10:51:39 114

原创 初级算法-实现 strStr()

初级算法-实现strStr()

2022-07-05 10:43:38 119

原创 初级算法-字符串转换整数 (atoi)

说实话这题让我深深的感觉到了自己写的代码的臃肿,在加了不知多少个判断之后,才通过。再记录一下官方的解法,官方引入了一个概念,叫自动机,也可以叫有限状态机,多是产品经理理业务逻辑用的,也可以是测试用的测试用例,这里盗个图,作为有限状态机示例。实际在业务逻辑相对复杂的开发中,也可以列一个这么个表,这样,首先代码不会过于臃肿,其次业务场景也不会有什么遗漏,毕竟你开发完了再自己测怎么都觉得没啥大问题。。。回到本题,通过题目,可以列出4个状态:初始状态,有正负标记,添加数值中,完成;而针对传入的字符串的字符

2022-06-15 20:16:36 87

原创 初级算法-验证回文串

双指针左右同时遍历比较,类似于快排的双边分治法,中间要跳过那些个没吊用的符号。代码如下:

2022-06-06 20:11:27 80

原创 初级算法-有效的字母异位词

本题利用计数排序的思想,创建一个计数数组,然后分别统计两个字符串字符计数,最后判断计数数组是不是相等/或者一个统计加一个统计减,判断计数数组是不是都设计0。代码如下: public boolean isAnagram(String s, String t) { if (s.length() != t.length()) { return false; } int[] count = new int[26]; ..

2022-05-25 20:05:53 49

原创 初级算法-字符串中的第一个唯一字符

借用计数排序的思想,构建计数数组,并将字符-'a’作为索引,最终重新遍历字符串看是不是1返回即可 public int firstUniqChar(String s) { int[] count = new int[26]; for (int i = 0; i < s.length(); i++) { count[s.charAt(i) - 'a']++; } for (int i = 0; i &l..

2022-05-19 19:32:17 59

原创 初级算法-整数反转

就按数字的方式处理,通过%10从x拿出来数字,再*10放入到

2022-05-19 19:03:50 58

原创 初级算法-反转字符串

这是个白给的题,直接互换就行了,互换次数为长度除2代码如下: public void reverseString(char[] s) { for (int i = 0; i < s.length / 2; i++) { char temp = s[i]; s[i] = s[s.length - 1 - i]; s[s.length - 1 - i] = temp; } }..

2022-05-07 09:32:57 169

原创 初级算法-旋转图像

就从外到里一圈圈的转就行了。。也就会个for循环。。代码如下: public void rotate(int[][] matrix) { int n = matrix.length; for (int i = 0; i < n / 2; i++) { for (int j = i; j < n - i - 1; j++) { int temp = matrix[i][j]; ..

2022-05-05 11:11:12 54

原创 初级算法-有效的数独

借用计数排序思想,构建3个计数二维数组分别是行、列和九宫的计数数组,如果大于0返回false。代码如下: public boolean isValidSudoku(char[][] board) { int[][] row = new int[9][9]; int[][] col = new int[9][9]; int[][] box = new int[9][9]; for (int i = 0; i < board...

2022-05-05 10:06:26 103

原创 java List深拷贝

不管是new ArrayList(array);还是array.stream().collect(Collectors.toList());都做不到List array的深拷贝。

2022-04-25 19:56:08 9297 6

原创 初级算法-两数之和

有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。—鲁迅最简单的方法是暴力枚举,正可谓任题千变万化,我自n for走天下。 private static int[] twoSum(int[] nums, int target) { int length = nums.length; for (int i = 0; i < length; i++) { int num = target - nums[i];

2022-04-19 09:20:49 406

原创 初级算法-移动零

想到的思路是借用选择排序的一些思路设置一个指针,然后把后面不是0的数依次赋值到前面, 来,最后把剩下的数直接置0.代码如下: public void moveZeroes(int[] nums) { int i = 0; for (int j = 0; j < nums.length; j++) { if (nums[j] != 0) { nums[i++] = nums[j]; ..

2022-04-18 23:10:59 53

原创 初级算法-加一

先皮一波,来个奇葩解法就是把这个数组搞成字符串,用BigDecimal加一,然后再用split拆成数组,最后转成int数组。代码如下: public int[] plusOne(int[] digits) { StringBuilder s = new StringBuilder(); for (int digit : digits) { s.append(digit); } String[] bd = new..

2022-04-18 21:46:36 885

原创 初级算法-两个数组的交集 II

首先想到的解法是借用计数排序的思想,借助计数数组,拿到交集。代码如下: public int[] intersect(int[] nums1, int[] nums2) { // 交集,所以结果数组的长度肯定没最小长度大 int length = Math.min(nums1.length, nums2.length); int[] result = new int[length]; // 计数排序思路,先获取最大最小值 int ..

2022-04-18 21:11:52 162

原创 初级算法-只出现一次的数字

最先想到的解法是可以利用异或相等的数等于0的特性得到那个数。代码如下: public int singleNumber(int[] nums) { int result = 0; for (int num : nums) { result ^= num; } return result; }其次想到的解法可以利用HashSet的元素不可重复性,得到那个数。代码如下: public int s..

2022-04-17 19:20:11 60

原创 初级算法-存在重复元素

首先想到的是可以利用HashSet的不可重复特性进行判断。代码如下: public boolean containsDuplicate(int[] nums) { if (nums.length <= 1) { return false; } HashSet<Integer> set = new HashSet<>(); for (int num : nums) { ..

2022-04-17 19:08:49 92

原创 初级算法-旋转数组

解题思路:拿到题,

2022-04-17 18:50:24 452

原创 vue请求百度日历api以及跨域问题解决

url:https://sp1.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.phpparams:query: 2022年5月 (要查询的月份,必传)resource_id: 39043(资源ID,必传)t: 1650005331470(时间戳,可以不传)cb: op_aladdin_callback (好像是回调参数,可以不传)format: json (返回值格式,可以不传)tn: wisetpl(提交搜索请求来源,可以不传)cb: op_aladdin_

2022-04-15 15:17:03 1922

原创 排序算法-基数排序20220413

基数排序偏向于实际业务场景使用,一般适用于字符串排序或者手机号等排序,其中字符串排序使用了ascII码作为依据,基数排序思想是逐位进行计数排序,最终得到有序的数组;一般业务来讲,我们希望的顺序是第一位字符/数字优先有序,在第一位有序的情况下再要求第二位、第三位…有序,想做到这个需求,需要我们从低位优先进行排序,一些特殊业务也可以考虑从高位优先进行排序。而更多的时候,字符串是参差不齐的,那在排序的时候,我们可以对短的字符串,在末位补0让它和最长的一样长就可以比较了。基数排序代码如下:public cla

2022-04-13 11:49:19 376

原创 排序算法-归并排序20220413

归并排序的思想是,无限向下折半拆分,将待排序的无序数组拆分成俩俩一组的多个小数组,就像二叉树的结构一样,然后将每个小数组进行组内排序,排序完成后,再按之前拆分的层级再逐层合并后排序,最终合并出一个有序数组,比如一个长度为8的数组操作步骤:1->2->4->8->4->合并后排序->2->合并后排序->1->合并后排序。代码及代码解释如下: public static void mergeSort(int[] array, int start,

2022-04-13 10:16:31 953

原创 排序算法-希尔排序20220412

希尔排序的思想是,在拿到无序数组后,我们首先对这个数组进行一个粗略的排序,让整个数组没那么无序之后,再进行插入排序,是对插入排序的一个优化升级。而怎样确定这个粗略的排序有多粗呢,这涉及到一个增量序列的概念,我们要根据增量序列逐次将数组分成多个小的无序数组,然后将每个小的无序数组通过插入排序进行有序化,最终跨度为1将对这个初步有序数组进行最后的插入排序。增量序列默认为shell增量每次增量折半,比如8,4,2,1,而后期的优化中比较出名的有:Hibbard增量和 Sedgewick增量等,这个不在排序的范

2022-04-12 19:20:04 403

原创 排序算法-插入排序20220412

插入排序算法有点像扑克牌的排序,其思想是从头依次将每一个元素放到有序的地方,也就是每拿出来一个元素,将它和它前面排过序的元素挨个比较一下,然后将它插入到那个比前一个比它小,后一个比它大的地方,当所有元素都这么操作一遍之后,无序的数组就变成了一个有序的数组。直接插入: public static void straightInsertSort(int[] arr) { for (int i = 0; i < arr.length; i++) { int temp = arr[i];

2022-04-12 15:40:09 176

原创 排序算法-选择排序20220411

选择排序很直白,它的思路是循环的每一圈找到剩下没排序的数组里的最小/最大值(看你想从小到大还是从大到小了),然后将它直接和剩下的这些个元素的第一个元素交换,最终得到有序数组。选择排序代码如下: public static void selectionSort(int[] array) { for (int i = 0; i < array.length - 1; i++) { int minIndex = i; for (int j = i + 1; j < array.le

2022-04-11 22:19:02 52

原创 排序算法-桶排序20220411

桶排序思想和计数排序比较相似,不同的是桶排序支持小数排序,为了支持小数排序,桶排序在操作的时候,为待排序数组构建一个List,而这个List的每个元素又是一个List,这每个List元素各自管理一段数值区间,当进行桶排序的时候,遍历待排序数组,将每个数放到对应的数值区间中,就像丢到不同的桶里一样,最后再对每个桶进行内部排序,最后遍历整个List,最终得到排序数组。首先需要知道每个区间跨度多少合适,使用公式(最大值 - 最小值)/(桶数量 - 1)计算,这里桶数量等于待排序数组元素个数。而每个元素应该放到

2022-04-11 21:11:48 155

原创 初级算法-买卖股票的最佳时机 II

解题思路:贪心算法:没啥很复杂的,贪心算法的思路就是每次取得局部最优解,从而得到全局最优解,不过可能这个全局最优解并不是最优的。。针对上面那道题,我们每次都把增长的取到,累加就可以得到最大利润。public int maxProfit(int[] prices) { int maxProfit = 0; for (int i = 1; i < prices.length; i++) { if (prices[i] > pric.

2022-04-11 18:06:44 79

原创 排序算法-计数排序20220314

计数排序思想是将数值作为角标,统计每个角标有几个这样的数,最后循环取出则是一个有序数组。超基础版:取到这个arr数组最大值,然后根据最大值创建一个新数组,循环arr将arr数值对应新数组的角标计数。最后循环得到有序arr。 public static void countSort(int[] arr) { int max = arr[0]; for (int i = 1; i < arr.length; i++) { if (arr[i

2022-03-22 19:59:55 105

原创 排序算法-堆排序20220314

学习堆排序必须搞明白堆这个数据结构!!!排序思路:首先将待排序数组构建成最大堆,然后逐一将root放到末尾,堆的特性会将其第而大的数作为最大数上浮成root,最终产生有序数组。代码:import java.util.Arrays;/** * 堆排序 * * @author DepengZhang * @date 2021年07月30日 20:01 */public class HeapSort { /** * 下沉调整 * * @param array 待

2022-03-14 18:36:45 812

原创 初级算法-删除排序数组中的重复项

题目描述:解题思路:套用快速排序单边循环法思想,记录第一个数的角标为tag,然后逐一进行比对,如果大于tag的值,则将tag+1的数和比对的数互换(同一个就别换了)。代码:class Solution { public int removeDuplicates(int[] nums) { int length = nums.length; if (length <= 1) { return length; }

2022-03-14 18:30:56 63

原创 关于java8 stream的map问题记录

2022-03-10记录此坑需求是将一个实体类List中的一个字段转成逗号隔开的字符串。然后我之前这么写:List<TmsOrderForExportVo> orderList = map返回的查询结构String codes = orderList.stream().map(TmsOrderForExportVo::getContractCode).collect(Collectors.joining(","));测试数据这个字段是空的,null值,然后我打印了一下codes

2022-03-10 18:54:11 1494

原创 排序算法-快速排序20220309

基于冒泡排序的部分思路,我们可以取一个分界值,将小于它的数放它的左边,把大于它的数放它的右边,然后以这个分界值为界限,拆分出两个新的待排序的数组,继续这一步骤,这就是快速排序,而这个步骤叫分治法。而移动方式有两种,一种是单边的,一种是双边的,我们默认取第一个数为分界值。单边单边循环步骤是首先选中分界值。并记录其角标,然后对除了分界值外的数组进行for循环,...

2022-03-10 10:41:10 76

原创 LocalDateTime无法解析新的解决方案

接原文章https://blog.csdn.net/beConcentration/article/details/121901002把反序列化改写了一下,前几个和原文章差不多:LocalDateFormatConfigpackage com.zoomlgd.config;import cn.hutool.core.date.DatePattern;import com.fasterxml.jackson.databind.DeserializationFeature;import com

2022-03-08 20:58:26 936

原创 排序算法-冒泡排序20220301

先以最简单的冒泡排序做为开始。1.1 基本写法每次取一个数,将它和前面每一个数进行比较,如果比前面的数小,就互换,就像泡泡一样飞到水面 public static void bubbleSort(int[] array) { for (int i = 1; i < array.length; i++) { for (int j = i; j > 0; j--) { if (array[j] < array[

2022-03-01 20:54:26 46

原创 uniapp添加阿里字体图标库图标

字体图标添加1.需要到阿里矢量图标库添加2.添加后Unicode下载并替换@/styles/font下文件3.在线图标方式复制阿里矢量图标库->我的项目->Unicode->查看在线链接的@font-face并替换iconfont.css的@font-face,并在每个链接前添加https:3.本地图标方式iconfont.css中用下方代码替换@font-face@font-face { font-family: 'iconfont'; src: url('@/styl

2022-01-05 12:03:30 474

原创 LocalDateTime接收前端日期参数差8个小时、无法解析、返回前端带T等疑难杂症解决方案

新项目里使用LocalDateTime遇到了一些坑,总结一下,本文章以全局配置方式解决了以下问题ヽ( ̄▽ ̄)ノ:0、**概念介绍**:前端参数**反序列化**到后端,后端参数**序列化**到前端,具体概念请咨询战略合作伙伴(ノ゚∀゚)ノ [百度一下](https://www.baidu.com/)1、数据库和后端的日期差:请在数据库链接上加上&serverTimezone=Asia/Shanghai。2、后端无法接收数据库参数:大概率是数据库连接池包版本太低了,不支持LocalDatetime,我的是

2021-12-13 11:18:53 5822 3

原创 EasyCode 1.2.4升级1.2.5后生成代码有问题解决方案

1.2.4升级1.2.5后,部分配置发生了变化,导致生成代码无法使用引入宏定义方式变成了$!{define.vm}$!{autoImport.vm}模板名称变了,必须添加一个.vm后缀3.现在模板可以使用了,但是需要注意的是,生成的代码依旧有格式问题,请使用ctrl+alt+l进行格式化...

2021-12-06 18:49:31 621 2

空空如也

空空如也

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

TA关注的人

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