自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 区间相交、矩形相交判断总结

在写代码的时候经常会遇到判断两个区间是否相交,矩形是否相交先看两个区间相交的处理,有以下四种场景: 最直白的代码判断:第一种写法:包含四种场景(maxA<=maxB && maxA>=minB) || (minA>=minB && minA<=maxB) || (minA>=minB && maxA<=maxB) || (minB>=minA && maxB<=maxA)复杂度是4,容易写错第二种写法:包含四种场景(推荐写法)max(minA, minB) <= min(maxA, maxB)复杂度 1!(

2024-06-18 19:50:38 305

原创 验证字符串是否为回文串

起初定义两个指针 left指向字符串开头,rught 指向字符串结尾,如果 left 与 right 指向的字符相等,那么 left 加1 right 减 1,如果 不相等,此时根据题意应该删除一个字符后继续判断,删除有两种情况,删左边或者右边,移除后继续判断剩下的子串是否满足回文串要求。从字符串中删除一个字符能否得到一个回文字符串。

2024-06-17 23:16:35 194

原创 模拟竖式计算方式处理数据的加减操作-Java描述

之和,然后将得到和与对应的进制基数(当前二进制基数为2)相除,将取整的值赋给carry,作为进位,将取的余数作为当前数位的计算结果,重复上述动作处理下一个数位 i+1的结果,直到处理完所有数位,注意在最后需要判断carry大于0还是小于0,大于0表示。长度,仅仅使用Java语言自带的大整数方法转换也是不行的已经超出了计算机的表示范围,无法直接将二进制字符串转换成十进制数相加再将结果转化成对应的二进制字符串,针对这种情况我们只能模拟数学上的竖式计算方法解决这个求和问题。

2024-06-15 13:59:01 322

原创 二进制、十进制表示与转换总结

在生活中使用最多的进制是基于为10的进制表示法,一个任意的十进制可以表示为其中(j = 1,2,...,m) 是 0,1,2,3,4,5,6,7,8,9 十个数码中的一个。十进制数的基数是 10, 即其数码的个数为 10 ,且遵循逢十进一的规则。上式中相应于每位的数字的称为数字的权,所以每位数字乘以其权所得到的乘积之和即为所表示数的值。生活中十进制表示正、负数的方式因为在现实生活中十进制数存储并没有空间限制,可以无限制延长表示,正负数有专门的 +、- 符号表示。

2024-06-15 12:35:47 882

原创 求正整数数组中最大公约数-欧几里得算法

在做LeetCode算法题过程中,有一个求一组正整数的最大公约数的题目,起初遇到这个题头脑中只有暴力解法,从1~到数组最大值间挨个遍历数字尝试去除每一个数据,判断是否都能被整除,这样做效率十分低下,根本不可取。欧几里得在公元前300年左右就总结出一个经典快速求解一组正整数的最大公约数的方法;定理:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。定义两个正整数并且满足, 有(不妨设a>b 且r=a mod b ,r不为0)仅当时为 数字的最大公约数。

2024-05-23 01:06:55 352

原创 对数字进行按数位拆分技巧总结-Java描述

平时在解答LeetCode算法题目的过程中经常会遇到这样的场景:我们需要将一个非负多位整数按照数位进行拆分,例如下图所示,将78965拆分为 7, 8, 9, 6, 5总计5个单独的数字。我们经常想到的办法是将数字78965转换为String类型的字符串,再将字符串进行拆分,拆分后再将字符串转换为 int类型数字。此时:我们结合不断对数据进行整除10 与取余方式可以依次将数据从低位到高位依次拿到每一个数位的数据。对数据取余可以将不足10的数字直接获取到,此时也就达到拆分整数的目的。

2024-05-21 00:26:44 177

原创 浅谈Hash Map中解题技巧之先查再添加元素的经典应用

在使用HashMap解题时经常需要判断数组序列中是否存在两个值之和等于某一个目标值的题目, 在解答这类题目的一个典型暴力做法:双重for循环进行查找:这样时间复杂度太高了,需要进行优化,我们先假设数组nums中存在两个数的下标 i 与 j,对应的数据nums[i] + nums[j] == target, 此时我们定义一个空的HashMap对象 map 依次将 nums 数组中元素存入map当存入第 i 个数据时,此时 target - nums[i] 肯定不在 map 中,将nums[i] 正常存入

2024-05-21 00:04:32 788

原创 Floyd判圈算法

Floyd判圈算法,又称快慢指针算法、龟兔赛跑算法,是一个可以在有限状态机、迭代函数或者链表上判断是否存在环,求出该环的起点与长度的算法。

2024-05-09 00:24:13 457

原创 Java 8 stream 多属性排序易错点总结

Java 8 使用stream多属性排序

2024-04-15 23:14:03 747 1

原创 迪杰斯特拉算法(Dijkstra算法)

4、然后,我们需要看看新加入的顶点是否可以到达其他顶点(新加入顶点的邻接点集合)并且看看通过该顶点到达其他点的路径长度是否比源点直接到达短,如果是,那么就替换这些顶点在 dis 中的值。执行步骤5:在数组dis中顶点集合 V - T 中选取距离源点 v1最小值对应的顶点加入 T 集合, 此时对应 v6 v1 -> v5 -> v4 - > v6。3、然后,从 dis 数组选择最小值,则该值就是源点 s 到该值对应的顶点的最短路径,并且把该点加入到 T 中,此时完成一个顶点的选取。

2023-11-10 17:48:41 175

原创 差分数组感悟

2023-11-08 10:39:26 44

原创 Java集合操作

集合操作

2022-06-23 08:54:26 106 1

原创 采购同一款汽车配件少花钱多采购---二分查找边界问题

二分查找,找边界问题

2022-06-18 16:33:56 90 1

原创 滑动窗口-模板-双层循环进阶优化-->单层循环

滑动窗口;虫取法

2022-06-18 11:11:09 205

原创 2022-5-10日二分查找学习心得

2022-5-10日二分查找学习心得while循环控制条件 left < rightarray = {1,2,2,4}场景一:查找单个值int binarySearch(int[] nums, int target) { int left = 0; int right = nums.length - 1; // 注意 while(left <= right) { // 注意 int mid = (right + left) / 2;

2022-05-10 19:09:31 193 1

空空如也

空空如也

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

TA关注的人

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