自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 递归的时间复杂度(Master 公式)

和方法一唯一区别的地方是多加了一个 for 循环 每次循环数组的长度 a b 同方法一不变,但是 d 在三个常数操作外 额外增加了一个 O(N) 的操作 所以 d = 1。我们上面的两种方法都是每次求解子问题时求将问题对等的分成两份,倘若将数据分成三份,左边求三分一的数据右边求三分之二的数据,这样子的话不符合相同规模的划分,就不能使用 Master 公式来计算时间复杂度。这个是一个很简单的递归,将数组划分成左半部和右半部,求出左边最大值,在求出右边的最大值,最后比较左右的最大值,求出整个数组的最大值。

2024-03-12 20:32:44 1093 1

原创 栈和队列的常见面试题

使用两个队列来反复横跳,一个正常的。添加数据,需要取数据时,将数据移到。来添加元素,当需要取出元素时,若。我们可以使用两个栈,一个起名为。,在添加元素时,使用。中有数据,则弹出时调用。中所有数据全部弹出到。

2024-03-12 20:25:08 395 1

原创 leetcode 1856. 子数组最小乘积的最大值

在严格遵守定义的条件下,答案对应的子数组中,每一个最小的元素都对应着正确的答案,但是 在right 不遵守定义条件下,答案对应的数组中,只有最后出现的最小元素对应正确答案,我们要求的是最大值,所以保证只要有一个最大值即可。举例: [7,8,3,4,3,2,5] 其中有两个3 第一个3的区间计算出来的是 [0,3] 第二个3 的区间计算的是[0,4] 只有最后出现的那个相同的数字才是正确的答案。也就是:(prefixSum[6] - prefixSum[1]) * nums[4],也就是nums[2…

2024-03-09 14:01:38 873

原创 认识基础的数据结构

使用数组实现栈功能,我们可以使用一个数组或者动态数组,然后用一个变量(动态数组有 size()) 来记录当前栈总共有多少个元素,然后每次入栈记录一下,出栈时我们通过数组长度弹出最后一个值。在Java中,泛型类不能直接创建泛型数组,因为泛型的类型信息在运行时会被擦除,导致编译器无法确定数组的确切类型。,我们只需要维护一个头节点,头节点指向向下的节点,每次出栈时维护头节点即可。例: 链表 1->2->3->2->4->6->7 删除链表中所有的 2。例:a->b->c 翻转后 c->b->a。

2024-03-09 14:00:22 476

原创 算法的额外空间复杂度常数项

如果两个时间复杂度一样的算法,你还要去在时间上拼优劣,就看谁的常数项更低了。在比较算法常数项时,一般不会取理论分析的值,而是直接通过数据测试性能,在上一节认识时间复杂度中,时间复杂度是忽略低阶项和所有常数系数的。如果你的流程只需要开辟有限几个变量,额外空间复杂度就是O(1)若两个时间复杂是一样的,那么在实际运行时那个效果更佳呢?需要开辟一些空间来支持算法的流程所需要的内存空间。作为输出结果的空间,也不算额外空间。作为输入参数的空间,不算额外空间。1. 在时间复杂度上尽可能做到低。2. 使用最少的额外空间。

2024-03-04 10:56:03 393

原创 认识时间复杂度

最坏情况(Worst Case):当输入数组是逆序排列的,每次插入操作都需要比较并移动前面所有的元素,因此总的比较次数是1 + 2 + 3 + ... + (N-1) = (N-1) * N / 2次。因此,冒泡排序的时间复杂度是 O(N2)。类似地,对于范围[0, N-3],重复上述过程,但在最后一步中,比较arr[N-4]和arr[N-3],并将较大的数置于位置N-3。接下来,在范围[0, N-2]内重复上述过程,但在最后一步中,比较arr[N-3]和arr[N-2],并将较大的数置于位置N-2。

2024-03-01 14:48:57 380

原创 认识二分法

经常见到的类型是在一个有序数组上,开展二分搜索但有序真的是所有问题求解时使用二分的必要条件吗?只要能正确构建左右两侧的淘汰逻辑,你就可以二分。

2023-11-23 15:16:51 46

原创 leetcode 1856. 子数组最小乘积的最大值

在严格遵守定义的条件下,答案对应的子数组中,每一个最小的元素都对应着正确的答案,但是 在right 不遵守定义条件下,答案对应的数组中,只有最后出现的最小元素对应正确答案,我们要求的是最大值,所以保证只要有一个最大值即可。举例: [7,8,3,4,3,2,5] 其中有两个3 第一个3的区间计算出来的是 [0,3] 第二个3 的区间计算的是[0,4] 只有最后出现的那个相同的数字才是正确的答案。也就是:(prefixSum[6] - prefixSum[1]) * nums[4],也就是nums[2…

2023-09-28 17:43:38 108

原创 象棋马的走向--暴力递归转动态规划7

那么整个棋盘就是横坐标上9条线、纵坐标上10条线的区域。返回“马”从(0,0)位置出发,必须走k步。最后落在(x,y)上的方法数有多少种?棋盘的最左下角是(0,0)位置。给你三个 参数 x,y,k。

2023-07-11 13:56:20 72 1

原创 最长回文子序列--暴力递归到动态规划6

leetcode链接 https://leetcode.com/problems/longest-palindromic-subsequence/

2023-07-11 11:01:40 78 1

原创 最长公共子序列--暴力递归转动态规划5

最长公共子序列

2023-07-11 09:06:52 49 1

原创 数字转字母--暴力递归转动态规划4

给定一个只有数字字符组成的字符串str,返回有多少种转化结果。规定1和A对应、2和B对应、3和C对应...26和Z对应。111 可以转换成 AK AAA KA。"AAA"、"KA"和"AK"

2023-07-10 14:15:24 60 1

原创 背包问题--暴力递归转动态规划3

【代码】背包问题--暴力递归转动态规划3。

2023-07-10 14:07:00 40 1

原创 拿牌游戏--暴力递归转动态规划2

题目:给定一个整型数组arr,代表数值不同的纸牌排成一条线 玩家A和玩家B依次拿走每张纸牌 规定玩家A先拿,玩家B后拿 但是每个玩家每次只能拿走最左或最右的纸牌 玩家A和玩家B都绝顶聪明。

2023-07-05 18:39:00 57

原创 机器人走路---暴力递归转动态规划

题目:假设有排成一行的N个位置,记为1~N,N 一定大于或等于 2 开始时机器人在其中的M位置上(M 一定是 1~N 中的一个) 如果机器人来到 1 位置,那么下一步只能往右来到 2 位置;如果机器人来到N位置,那么下一步只能往左来到 N-1 位置;如果机器人来到中间位置,那么下一步可以往左走或者往右走;规定机器人必须走 K 步,最终能来到P位置(P也是1~N中的一个)的方法有多少种 给定四个参数 N、M、K、P,返回方法数。

2023-07-05 14:28:28 116

原创 spring boot admin 在https中无法正常访问的问题

采用Spring Boot Admin监控运行情况,部署Admin服务 在Nginx中配置SSL证书,通过HTTPS协议进行访问。

2023-03-10 13:54:00 949

原创 使用Long 类型的List 的contains 方法总是返回false

使用Long 类型的List 的contains 方法总是返回false mybatis plus json序列化和反序列化

2023-03-10 13:48:23 1963

原创 empty返回基本数组类型为false

目前发现的问题基本数据类型的数组如果写为int[] arr = {};此时返回的值为并不为空,empty返回结果为false。首先我们明白empty的判断什么情况下会返回为ture 空字符串 空的集合 值为null 找不到对应的值 根据以上结果返回false基本就是上述四种情况有至少一种被符合基本数据类型的原则:如果不赋值,那么他并不会为null,而是返回基本数据类型的默认值赋值。基本数据类型可以不赋值但是不可以为null。所以empty如果

2021-09-12 10:00:05 920

空空如也

空空如也

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

TA关注的人

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