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

原创 fatal error: openssl/bio.h: 没有那个文件或目录 #include <openssl/bio.h>

libssl-dev包含libraries, header files and manpages,他是openssl的一部分,而openssl对ssl进行了实现~出现这个或者fatal error: openssl/名单.h: No such file or directory。都是没有安装libssl-dev~使用sudo apt-get install libssl-dev来安装libssl-dev即可。

2023-03-10 20:13:05 1080

原创 opencv下载过慢的问题

pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple

2022-12-05 16:56:12 3689 2

原创 VirtualBox 安装 ubuntu后安装增强工具无效的解决办法

点击虚拟系统窗口内的设备——安装增强工具。此时可能没有反应,但虚拟机内会自动加载一个光盘镜像。手动打开该光盘,并右键使用终端打开。等他进程跑完,提示重启的时候重启即可。

2022-11-15 19:48:52 2647 8

原创 java.lang.AbstractMethodError: Method com/mysql/jdbc/ResultSet.isClosed()Z is abstract

mysql-connector-java版本过低。插入数据,更新数据,删除数据操作都可以成功。更换更高的版本可以解决。

2022-07-25 19:03:31 578

原创 LeetCode 1005 k次取反后最大化数组和

思路:1 将数组进行排序2 当前数小于 0 时翻转当前值 并且如果下一个数值的绝对值<= 当前数值 则下标 加一(idx ++ )3 当前数值 大于0 时 ,此时数值是数组绝对值最小。反复翻转当前数值4 当翻转次数 大于数组的长度时 就将当前 数值反复翻转class Solution { public int largestSumAfterKNegations(int[] nums, int K) { if (nums.length == 1)...

2022-04-26 16:08:41 97

原创 LeetCode 55 跳跃游戏

假如当前大小为3 可以选择跳1步 2步 或者 3步使用贪心算法:for (int i = 0; i <= coverRange; i++) { coverRange = Math.max(coverRange, i + nums[i]); if (coverRange >= nums.length - 1) { return true; } }循环的过程就是模拟...

2022-04-24 17:57:17 2106

原创 LeetCode 491 递增子序列

重点是去重:考虑一下去重问题,我使用了 O(n)O(n) 的判重方法:设 stack 中最后一个值的位置为 last。如果 stack 为空,则 last = -1。设当前正在处理的位置为 pos。如果在 nums 的子区间 [last+1, pos) 中,存在和 nums[pos] 相同的值,则当前 nums[pos] 必须丢弃,不然会产生重复的子序列。设现在 stack = [4, 6], pos = 4。如果只检查是否递增的话,nums[4] = 7 是可以放入的,放入后 s..

2022-04-17 19:28:51 97

原创 LeetCode 699 修剪二叉搜索树

publicTreeNodetrimBST(TreeNoderoot,intlow,inthigh){if(root==null){returnroot;}// 如果当前节点的值小于 最小值 则将右子节点赋给当前节点 //如果当前节点的值大于 最大值 则将左子节点赋给当前节点while(root!=null&&(ro...

2022-04-04 22:00:52 239

原创 LeetCode 450 删除二叉搜索树的节点

思路一:先遍历树 如果当前节点不是要删除的节点则把当前节点返回给上一个节点 或者 遍历到空节点也返回给上一个节点如果当前节点是要删除的节点 分几种情况1. 如果被删除的节点 左子节点为空 就返回 右子节点 给前一个节点2. 如果被删除的节点 右子节点为空 就返回 左子节点 给前一个节点3. 如果左右子节点都不为空 就找到当前节点的 右子节点 迭代到他的最左下的子节点 把最左下的子节点赋值给被删除的节点 再把最左下的节点删除 删除最左下也有两种方法...

2022-04-02 15:29:31 231

原创 LeetCode 236 找最近的公共祖先

必须使用后续遍历classSolution{publicTreeNodelowestCommonAncestor(TreeNoderoot,TreeNodep,TreeNodeq){if(root==null||root==p||root==q){//递归结束条件returnroot; // 只要找到相等的节点 就返回当前节点 或者递归结束}...

2022-03-28 22:23:06 520

原创 LeetCode 501 二叉搜索树的最小绝对值

因为是一个二叉搜索树 满足节点左边的值小于节点的值 节点右边的值大于节点的值所以使用中序遍历 保证有序还需要记录 当前节点的 前一个节点的值 preNode 计算与当前节点的差值class Solution { TreeNode pre;// 记录上一个遍历的结点 int result = Integer.MAX_VALUE; public int getMinimumDifference(TreeNode root) { if(root...

2022-03-28 11:14:29 287

原创 LeetCode 98 验证二叉搜索树

使用中序遍历中序 遍历是一个有序数列 可以利用这个性质class Solution { TreeNode max; // 递归 public boolean isValidBST(TreeNode root) { if (root == null) { return true; } // 左 boolean left = isValidBST(root.left)...

2022-03-27 13:07:03 542

原创 LeetCode 513 找树左下角的值

使用全局变量记录最大深度 和 最底层最左边的值 如何确保最后一层的记录的数值是最左边的数值 使用前序遍历就可以保证class Solution { private int Deep = -1; private int value = 0; public int findBottomLeftValue(TreeNode root) { value = root.val; findLeftValue(root,0); ...

2022-03-24 22:02:45 66

原创 LeetCode 404 求左子叶之和

public int sumOfLeftLeaves(TreeNode root) {if (root == null) return 0; int leftValue = sumOfLeftLeaves(root.left); // 左 int rightValue = sumOfLeftLeaves(root.right); // 右 ...

2022-03-24 21:09:11 46

原创 LeetCode 110 平衡二叉树

自底向上法 (最快捷的方法)public static boolean isBalanced(TreeNode root) { return getHeight(root) != -1; } private static int getHeight(TreeNode root) { if (root == null) { return 0; } int leftHeight = g...

2022-03-23 16:47:40 71

原创 LeetCode 117 填充每个节点的下一个右节点2

时间复杂度 O(n)空间复杂度O(1)方法很妙 !!!!!!! public Node connect(Node root) { if (root == null) return root; //cur我们可以把它看做是每一层的链表 Node cur = root; while (cur != null) { //遍历当前层的时候,为了方便操作在下一 ...

2022-03-21 18:26:57 47

原创 LeetCode 116 填充每个节点的下一个右节点

因为是完美树 所以每个子节点 有左子节点 就会有子节点三种方法方法一 使用 队列 将每层的节点存储在 队列中public static Node rightToNext(Node root) { ArrayDeque<Node> queue = new ArrayDeque<>(); Node node = root; if (root == null) { return root; ...

2022-03-21 17:14:17 52

原创 LeetCode 239 滑动窗最大值

方法一:创建 一个队列 保证加入到队列的数据按照从大到小排列当数据需要插入队列时 和队列的最后的数据 进行比较 如果队列最后的数据 比当前值小 就说明这个数据一定不是这窗口的最大值 就把它删除掉 直到遇到 大于等于当前值的数据 加入到 队列的最后如果队列头的数据 已经不在当前窗口时 就去除掉 队列头的数据 直到 队列头是处于当前窗口 public static int[] maxSlidingWindow(int[] nums, int k) { ...

2022-03-18 14:21:52 71

原创 LeetCode 1047. 删除字符串中的所有相邻重复项

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:"abbaca" 输出:"ca" 解释:例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。提示:1 &

2022-03-17 19:21:46 61

原创 Leetcode翻转链表

使用双指针首先定义一个cur指针,指向头结点,再定义一个pre指针,初始化为null。然后就要开始反转了,首先要把 cur->next 节点用tmp指针保存一下,也就是保存一下这个节点。为什么要保存一下这个节点呢,因为接下来要改变 cur->next 的指向了,将cur->next 指向pre ,此时已经反转了第一个节点了。接下来,就是循环走如下代码逻辑了,继续移动pre和cur指针。最后,cur 指针已经指向了null,循环结束,链表也反转完毕了。 此时我们ret

2022-03-13 16:16:22 72

原创 移除链表元素

删除头结点的操作和删除 子节点的操作有所区别可以设置虚拟头结点来连接原来链表的头结点 来达到删除头结点 的目的

2022-03-12 16:49:31 324

原创 leetCode 三数之和 四数之和 双指针

先将数组从小到大排序三数之和四数之和拿这个nums数组来举例,首先将数组排序,然后有一层for循环,i从下标0的地方开始,同时定一个下标left 定义在i+1的位置上,定义下标right 在数组结尾的位置上。依然还是在数组中找到 abc 使得a + b +c =0,我们这里相当于 a = nums[i] b = nums[left] c = nums[right]。接下来如何移动left 和right呢, 如果nums[i] + n...

2022-03-12 12:38:01 56

原创 安装scikit-image

在网上搜了一下怎么安装scikit-image,发现有些教程很麻烦,然后自己尝试了一下,特此记录,养成记录的好习惯。具体步骤:1.在Anaconda下创建一个虚拟环境用来安装该包 conda create -n skimage python=3.62.创建完成后进入该虚拟环境,并安装scikit-image activate skimage pip install scikit-image3.安装完成后,在skimage虚拟环境下进入python,然...

2021-10-12 11:11:50 5253

空空如也

空空如也

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

TA关注的人

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