自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(144)
  • 资源 (1)
  • 收藏
  • 关注

原创 VmWare克隆 CentOS7

VMWare 克隆 CentOS

2022-10-05 22:23:26 811 1

原创 为什么函数式接口 Comparator 中有 “两个抽象方法”?

为什么函数式接口 Comparator 中有 “两个抽象方法”?

2022-07-21 10:10:56 733 1

原创 《剑指offer》-day 27 栈与队列(困难)【单调队列】

剑指 Offer 59 - I. 滑动窗口的最大值单调队列参考:单调队列-leetcode- 239. 滑动窗口最大值思路 🤔维护一个队列,其单调性为“从队头到队尾单调减”,可对其操作如下:add(int val):若当前元素 valvalval > 队尾元素,则需要维护单调性,即队尾出队,直至满足单调性为止(从队头到队尾单调减);否则,则将当前元素 valvalval 直接插入队尾,即可remove(int val):若当前元素 valvalval == 队头元素,则将队头元素出

2022-04-30 21:28:13 455

原创 【双指针】LeetCode- 905. 按奇偶排序数组

905. 按奇偶排序数组双指针 + 两遍扫描思路第一遍,处理偶数第二遍,处理奇数class Solution { public int[] sortArrayByParity(int[] nums) { int n = nums.length; int[] res = new int[n]; int slow = 0; for (int fast = 0; fast < n; fast++) {

2022-04-28 16:20:21 570

原创 DFS -LeetCode-563. 二叉树的坡度

563. 二叉树的坡度DFS/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, Tr

2022-04-27 14:30:13 754

原创 《剑指offer》-day 24 -数学(中等)

剑指 Offer 14- I. 剪绳子提示:2<=n<=582 <= n <= 582<=n<=58注意:本题与 343. 整数拆分 题相同DFS (TLE)class Solution { int n; int res = 0; public int cuttingRope(int n) { this.n = n; dfs(0, 1, new ArrayList<>());

2022-04-25 13:35:26 620

原创 《剑指offer》-day 20 分治算法(中等)【分治 & 快速幂】

剑指 Offer 07. 重建二叉树DFS(分治)思路需要构建树,所以需要用 root.left、root.right “接住” 下层递归返回结果,所以需要递归返回值递归函数设计为:// 均为左闭右闭区间TreeNode build(int preorderStartIndex, int preorderEndIndex, int inorderStartIndex, int inorderEndIndex)终止条件:如果当前子数组为空,即 n < 0,则 return

2022-04-21 13:12:22 652

原创 【两次遍历 OR 双指针】-LeetCode-821. 字符的最短距离

821. 字符的最短距离一次遍历 + 双指针思路从当前位置 iii 同时向左、右扫描,直至二者其中之一遇到 c(注意,防止边界 left、right 越界);取二者距离的 minclass Solution { public int[] shortestToChar(String s, char c) { int n = s.length(); int[] res = new int[n]; for (int i = 0; i <

2022-04-19 11:12:15 81

原创 【TreeMap】-根据 key 或 value 排序

1. 根据 key 排序引言TreeMap 中key 可以自动对 String 类型或8大基本类型的包装类型进行排序。但是,TreeMap 无法直接对自定义类型进行排序。当我们想对对 TreeMap 中 key 中的自定义类型排序时,必须要指定**排序规则。主要有两种解决方案**:根据 key 排序,主要有两种方法方法1:实现 Comparator 接口,并传递给 TreeMap 构造器;方法2:使得 key 对应类 implements Comparable接口。两种排序规则如

2022-04-17 12:47:04 4574 1

原创 《剑指offer》 -day14- 搜索与回溯算法(中等)【DFS】

剑指 Offer 12. 矩阵中的路径DFS思路 🤔遍历矩阵中所有元素:若矩阵中当前元素 board[i][j] 和 word.charAt(0) 相等时,尝试使用 dfs 进行判断由于是只有找到一个符合条件的,即可。满足条件时,则可以直接返回,所以可以将 dfs 设置为带有返回值 boolean dfs(StringBuilder cnt, int x, int y, int index);每次 dfs 判断当前位置 (x, y) 上、下、左、右 四个方法对应的新位置 (xx, yy)

2022-04-14 20:28:43 282

原创 【DFS专题】-LeetCode-22. 括号生成

22. 括号生成DFS参考:liweiwei1419 大佬的题解思路 🤔当前左括号没用完时,即 left < n,则可以继续添加左括号(对应上图中生成左子树);当前右括号没用完,且已经存在添加的右括号数量比 已经天的左括号数量少(严格小于)时,即right < n && right < left,才可以添加右括号(对应上图生成右子树)当所有括号(左、右括号)都用完了,即 right >= n && left >= n,则使用

2022-04-11 11:26:25 255

原创 【DFS专题】-LeetCode-993. 二叉树的堂兄弟节点

993. 二叉树的堂兄弟节点提示:二叉树的节点数介于 2 到 100 之间。每个节点的值都是唯一的、范围为 1 到 100 的整数。DFS思路 🤔题意转换:其实是让我们判断 xxx、yyy 节点的深度是否相等,且判断 xxx、yyy 的父节点是不是同一个节点使用 boolean dfs(TreeNode root, int target, int deepth) 来求:求节点值为 targettargettarget 节点的深度(自上而下)、及其父节点 ;若当前节点 root

2022-04-11 11:10:37 131

原创 位运算 -LeetCode-397. 整数替换

397. 整数替换提示:1<=n<=231−11 <= n <= 2^{31} - 11<=n<=231−1DFS(暴力)思路:根据题意,模拟nnn 为偶数,则减半,且操作次数加一;否则,找 n−1n - 1n−1 和 n+1n + 1n+1 变成 1 的操作次数的最小值class Solution { public int integerReplacement(int n) { return dfs(n);

2022-04-10 13:46:07 422

原创 【二分--分堆】 -LeetCode-1011. 在 D 天内送达包裹的能力

1011. 在 D 天内送达包裹的能力提示:1<=days<=weights.length<=5∗1041 <= days <= weights.length <= 5 * 10^41<=days<=weights.length<=5∗1041<=weights[i]<=5001 <= weights[i] <= 5001<=weights[i]<=500一开始误以为是“背包问题”,后来看了 三叶姐

2022-04-08 14:34:06 279

原创 《剑指offer》 -day7-搜索与回溯算法(简单)

剑指 Offer 26. 树的子结构剑指 Offer 27. 二叉树的镜像递归写法一:不带返回值第一种递归的写法比较直观,但是需要单独定义一个 不带返回值的函数 void dfs(root)思路:每次遍历时,交换当前节点的左、右孩子节点遍历二叉树的方式可以采用 前序、后序、层次遍历,但是不能使用中序遍历。这里采用的是“前序”/** * Definition for a binary tree node. * public class TreeNode { * int

2022-04-07 22:29:11 502

原创 【二分--分堆】-LeetCode-2226. 每个小孩最多能分到多少糖果

2226. 每个小孩最多能分到多少糖果提示:1<=candies.length<=1051 <= candies.length <= 10^51<=candies.length<=1051<=candies[i]<=1071 <= candies[i] <= 10^71<=candies[i]<=1071<=k<=10121 <= k <= 10^121<=k<=1012上周周赛的一

2022-04-05 20:16:26 325

原创 【二分专题】-「“两段性”」-LeetCode-33. 搜索旋转排序数组

33. 搜索旋转排序数组引言by 三叶题解在有序数组中搜索,可以考虑使用 【二分】求解。「二分」的本质是两段性,并非单调性。只要一段满足某个性质,另外一段不满足某个性质,就可以用「二分」。本题由于发生了“旋转”,整体上并不是纯粹的“有序数组”,所以首先需要找到“旋转点”的位置,而由于“旋转点”分割的左、右子数组 则均为“有序” --> 可以二分。查找“旋转点”的位置又可以有两种方法,即“线性遍历”、或“利用两段性”使用二分来找“旋转点”,具体的两种解法如下所示。二分(线性遍历旋转

2022-04-05 12:44:42 543

原创 区间求和 之`树状数组` -leetcode-307. 区域和检索 - 数组可修改

307. 区域和检索 - 数组可修改引言树状数组适用于什么场景?答:单点修改、区间查询lowbit 运算lowbit() 运算:非负整数 nnn在二进制表示下 最低位 1 及其后面的 0 构成的数值代码如下int lowbit(int x) { return x & -x;}树状数组概念对于一个序列,我们在其上建立一个如下如所示的森林结构。每个节点 t[x] 保存以 xxx (包括xxx)为根的子树中叶节点值的和。那么每个节点覆盖的长度是多少呢?把每

2022-04-04 11:38:16 1098

原创 矩阵-模拟

566. 重塑矩阵思路:首先,判断重塑尺寸是否合法,若不合法 --> 则直接返回原数组;维护一个下标 index 记录当前填充到“新数组”的第 index 个元素了;遍历“旧数组”,且新、老数组下标关系为:row = index / c;col = index % c;class Solution { public int[][] matrixReshape(int[][] mat, int r, int c) { if (mat.length ==

2022-04-03 21:11:59 487

原创 大、小堆 - 模拟 -leetcode-1801. 积压订单中的订单总数

1801. 积压订单中的订单总数大、小堆 - 模拟写的有点小复杂,大佬勿喷。只是记录一下自己的做题思路。思路:使用“小根堆 --> sellQueue 积压队列”、“大根堆 --> buyQueue 积压队列”;“采购”订单:“没人卖”、或“因为本次采购手里钱不够,而买不起”时,则直接将当前采购订单积压到 buyQueue,即可;本次采购能买得起时,则持续“采购”,直至(对应 while )“钱不足”、或“本次订单需求完事儿了” 、或 “已经没有商品可以采购了”;

2022-04-02 20:57:03 456

原创 《剑指offer》 -day2-链表(简单)

剑指 Offer 06. 从尾到头打印链表两遍扫描 + 数组倒序思路:第一遍扫描链表,求链表长度 n;第二遍扫描链表,==“倒序”==填充数组 res。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution {

2022-04-02 12:55:57 654

原创 《剑指offer》 -day1-栈与队列(简单)

剑指 Offer 09. 用两个栈实现队列思路:需要使用一个“输入栈” 和 “输出栈”。入队:直接将元素压入“输入栈”,即可;出队:首先,判断队列是否为空,若为空,则无法处理,直接return -1;然后,判断“输出栈”是否为空:若“输出栈”非空,此时“输出栈”栈顶元素即为“队头元素”,直接弹栈即可;若“输出栈”为空,则将所有输入栈元素转存值输出栈,然后再弹栈,即可class CQueue { Deque<Integer> statckIn;

2022-04-01 13:08:16 825

原创 【堆-模拟】SJF 短作业优先 -leetcode-1834. 单线程 CPU

1834. 单线程 CPU提示:tasks.length==ntasks.length == ntasks.length==n1<=n<=1051 <= n <= 10^51<=n<=1051<=enqueueTimei,processingTimei<=1091 <= enqueueTime_i, processingTime_i <= 10^91<=enqueueTimei​,processingTimei​<=109

2022-04-01 11:17:54 314

原创 单调栈-leetcode-739. 每日温度

739. 每日温度题目描述暴力class Solution { public int[] dailyTemperatures(int[] temperatures) { int n = temperatures.length; int[] res = new int[n]; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) {

2022-03-28 16:08:08 942

原创 栈模拟 or 双指针 -leetcode-5236. 美化数组的最少删除数

5236. 美化数组的最少删除数今天周赛的题目栈-模拟思路:栈中元素个数为偶数,相当于下标奇数位置,此时下一个元素可以任意;栈中元素个数为奇数,相当于下标偶数位置,下一个元素不能和栈顶元素相同;最终栈中元素即为新数组,若栈中元素个数为奇数,还要额外去掉一个元素(题目要求美丽数组长度为偶数)class Solution { public int minDeletion(int[] nums) { int n = nums.length; Dequ

2022-03-27 13:10:11 613

原创 try-catch-finally

参考 《Java核心技术 卷1》1. try - catch - finally 语法try { // 1 code that might throw exceptions // 2} catch (IOException e) { // 3 show error message // 4} finally { // 关闭资源 // 5 in.dose();}// 6finally 语句不管异常是否被捕获,finally 子句中的代码都会执行;通常,.

2022-03-20 11:10:24 2319

原创 贪心 -leetcode-56. 合并区间

56. 合并区间题目描述以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i]=[starti,endi]intervals[i] = [start_i, end_i]intervals[i]=[starti​,endi​] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。贪心 + 模拟思路:先按照起始位置升序排序; (为了让区间更“紧凑”)将升序排序后的第一个区间 放入结果集 res;遍历 interna

2022-03-18 11:15:13 378

原创 搭建局域网&&文件传输

背景:心血来潮,突然想用自己的笔记本和台式搭建一个局域网,来实现文件共享1. 更改 IP修改笔记本 IP 和 台式机 IP,保证其在同一个网段中这里以修改笔记本 IP 地址为例(台式机同理),具体操作如下:1.1. 控制面板 --> 更改适配器设置[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0kYBy74F-1647519420121)(C:/Users/Administrator/AppData/Roaming/Typora/typora-user-i

2022-03-17 20:38:49 6969

原创 贪心 -leetcode-1005. K 次取反后最大化的数组和

1005. K 次取反后最大化的数组和题目描述给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:选择某个下标 i 并将 nums[i]nums[i]nums[i] 替换为 −nums[i]-nums[i]−nums[i] 。重复这个过程恰好 k 次。可以多次选择同一个下标 i 。以这种方式修改数组后,返回数组 可能的最大和 。提示:1<=nums.length<=1041 <= nums.length <= 10^41<=nums.le

2022-03-16 20:04:29 237

原创 CentOS7 安装 Redis6

1. 安装 gccRedis 由 C语言编写,所以需要系统中有 gcc 编译器首先,使用 gcc --version 查看是否安装 gcc 编译器若未安装,则通过 yum install gcc 命令安装安装完毕后,再次测试 gcc 是否安装成功2. 安装 Redis在 Redis 官网 下载 Redis 压缩包,这里版本为 redis-6.2.6.tar.gz然后,将 Redis 压缩包 redis-6.2.6.tar.gz 上传至 CentOS7 中,以 /usr/redis6 为

2022-03-14 12:44:52 2093

原创 leetcode-235. 二叉搜索树的最近公共祖先

235. 二叉搜索树的最近公共祖先题目描述dfs(适用于所有二叉树)思路:采用后序遍历(从下向上遍历)若当前节点左子树中含p、右子树中含q(或反之),则说明当前 rootrootroot 即为 p、q的最近公共祖先;若当前节点左子树为空,则说明结果可能在当前节点的右子树中,则返回 右子树的遍历结果;若当前节点左有子树为空,则说明结果可能在当前节点的左子树中,则返回 左子树的遍历结果;否则,返回 null这里采用后序遍历,并且需要根据左、右子树的返回结果进行下一步逻辑判断,所以这里

2022-03-13 12:52:07 368

原创 模拟 -leetcode-2016. 增量元素之间的最大差值

2016. 增量元素之间的最大差值题目描述暴力 (2层for)一种十分简单的方法就是暴力,并且题目数据范围也不大,可以两层 for 暴力求解class Solution { public int maximumDifference(int[] nums) { int res = -1; for (int i = 0; i < nums.length; i++) { for (int j = i + 1; j < num

2022-02-27 10:11:44 518

原创 冒泡排序 思想 -leetcode-969. 煎饼排序

969. 煎饼排序题目描述冒泡排序 思想参考:彤哥 题解思路:类似于冒泡排序思想:每次排序时,将当前最大的元素扔到当前的末尾,即保证 [k,n−1][k, n - 1][k,n−1] 是当前最大值当前的最大元素至多经过两次“煎饼交换”,就可以放到最终的位置将当前最大元素交换到开头(i = 0)处;再将这个元素从开头交换到 末尾class Solution { public List<Integer> pancakeSort(int[] arr) {

2022-02-19 23:56:31 120

原创 抽象类 vs. 接口

区别抽象类接口有构造器,但是不能被实例化没有构造器,也不能被实例化无默认类型;JDK7之前只能有 abstract 方法,即空方法体;JDK8 开始接口中可以使用 default、static方法;JDK9开始接口中可以使用 private方法默认方法类型为 public abstract无默认类型,可以有非 psf 类型字段默认字段类型为 public static final注意:接口可以理解为是对抽象类的进一步抽象,它是一种“规范” -> 方便我

2022-02-16 23:56:04 455

原创 二分-leetcode-540. 有序数组中的单一元素

540. 有序数组中的单一元素题目描述给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。请你找出并返回只出现一次的那个数。你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。提示:1<=nums.length<=1051 <= nums.length <= 10^51<=nums.length<=1050<=nums[i]<=1050 <= nums[i] <= 10

2022-02-14 23:08:39 155

原创 滑动窗口 -leetcode-1984. 学生分数的最小差值

1984. 学生分数的最小差值题目描述提示:1<=k<=nums.length<=10001 <= k <= nums.length <= 10001<=k<=nums.length<=10000<=nums[i]<=1050 <= nums[i] <= 10^50<=nums[i]<=105滑动窗口必然是排序后,相邻 k 个数的 首尾 之间取 min思路:先排序;若数组长度小于 k,则

2022-02-11 23:36:55 268

原创 哈希表 -leetcode-2006. 差的绝对值为 K 的数对数目

2006. 差的绝对值为 K 的数对数目提示:1<=nums.length<=2001 <= nums.length <= 2001<=nums.length<=2001<=nums[i]<=1001 <= nums[i] <= 1001<=nums[i]<=1001<=k<=991 <= k <= 991<=k<=99暴力数据范围比较小,可以直接 2层for暴力枚举这里省略代码

2022-02-09 23:39:05 251

原创 PicGO + Gitee + Typora 搭建图床

前言使用 Typora 记笔记时,插入图片太不方便了。语雀中图片虽然可以直接复制,但是有防盗链机制,导出称 MarkDown就无法显示图片。网上查询后,发现使用PicGo 搭建图床可以解决这一问题PicGo搭建图床的教程网上有很多,这里只是记录以下 配置过程中遇到的错误 和 常见用法!参考教程:Gitee + PicGo也可以使用 SM.MS 作为图床遇见错误错误一报错信息:picgo上传失败:you must be logged in to use错误原因:未设置 “默认图

2022-02-09 13:15:29 1080 5

原创 双指针 or 哈希表 -leetcode-1748. 唯一元素的和

1748. 唯一元素的和题目描述给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。请你返回 nums 中唯一元素的 和 。提示:1<=nums.length<=1001 <= nums.length <= 1001<=nums.length<=1001<=nums[i]<=1001 <= nums[i] <= 1001<=nums[i]<=100hash思路:数据范围比较小,可以直

2022-02-06 17:03:03 178

原创 DFS -leetcode-1219. 黄金矿工

1219. 黄金矿工题目描述你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为 m * n 的网格 grid 进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量;如果该单元格是空的,那么就是 0。为了使收益最大化,矿工需要按以下规则来开采黄金:每当矿工进入一个单元,就会收集该单元格中的所有黄金。矿工每次可以从当前位置向上下左右四个方向走。每个单元格只能被开采(进入)一次。不得开采(进入)黄金数目为 0 的单元格。矿工可以从网格中 任意一个 有黄金的单元格出发

2022-02-05 22:44:59 160

ABSA-15_Restaurants_Train_Final.xml

方面级情感分类 SemEval-2015 ABSA Restaurant Reviews - Train Data

2021-05-16

空空如也

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

TA关注的人

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