自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

博学 笃志 切问 近思

这个人很懒,什么也没留下。

  • 博客(315)
  • 资源 (1)
  • 收藏
  • 关注

原创 2018年第43届ACM/ICPC亚洲区域赛沈阳站现场赛

2018年第43届ACM/ICPC亚洲区域赛沈阳站现场赛  这次比赛赛前,有消息称这次比赛的难度是div1,比赛前心里没底。因为自己的学校实力不强,所以这次现场赛资格也来之不易,这是我第一次也是我最后一次打ICPC,所以我不想留下遗憾。  拿到题目的时候也有点畏惧,因为这次比赛的题目普遍性的都很长,而且是全英文的。为了防止漫无目的的读题而影响做题时间,我们决定跟榜。很快有大佬队过了J题,J题题...

2018-10-23 21:32:02 4349 2

原创 YOLOv3-YOLOv8的一些总结

这个文档主要总结YOLO系列的创新点,以YOLOv3为baseline。参考(抄)了不少博客,就自己看看吧。有些模型的trick不感兴趣就没写进来,核心的都写了。YOLO系列的网络都由四个部分组成:Input、Backbone、Neck、Prediction head。Input:主要是在训练开始之前进行resize、数据增强等操作,不同的YOLO在数据增强方面也有很多改进。在测试阶段则只会进行resize。

2023-12-15 16:37:55 813 2

原创 强化学习(Reinforcement Learning)与策略梯度(Policy Gradient)

强化学习与Policy Gradient的介绍

2023-10-14 11:00:56 622 1

原创 Java基础

1 面向对象三大特征1.1 封装封装性就是尽可能的隐藏对象的内部细节,只保留有限的接口和方法与外界进行交互。封装的原则是使对象以外的部分不能随意访问和操作对象内部属性,从而避免了外界对对象内部属性的破坏。privatedefaultprotectedpublic同一类中√√√√同一包中√√√子类√√全局范围√1.2 继承子类的对象拥有父类的全部属性与方法,称作子类对父类的继承,关键词为 extends 。父类可以拥

2022-02-21 17:11:26 250

原创 Leetcode 1342 将数字变成0的操作次数

题目给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。解题思路  直接模拟可以写,但科班人不能满足于此,位运算解决之。末尾为 1 的时候是奇数,需要对原数 -1 ,操作数 +1 ,又因为 /2 是必须的操作,所以答案就是二进制位数加上二进制中 1 的个数再 -1 (首位不算)。代码class Solution { public int numberOfSteps(int num) { int ans

2022-01-31 00:36:15 605

原创 Leetcode 884 两句话中不常见单词

题目句子 是一串由空格分隔的单词。每个 单词 仅由小写字母组成。如果某个单词在其中一个句子中恰好出现一次,在另一个句子中却 没有出现 ,那么这个单词就是 不常见的 。给你两个 句子 s1 和 s2 ,返回所有 不常用单词 的列表。返回列表中单词可以按 任意顺序 组织。解题思路  HashMap解决之。代码class Solution { public String[] uncommonFromSentences(String s1, String s2) { List&

2022-01-31 00:35:26 5762

原创 Leetcode 1765 地图中的最高点

题目给你一个大小为 m x n 的整数矩阵 isWater ,它代表了一个由 陆地 和 水域 单元格组成的地图。如果 isWater[i][j] == 0 ,格子 (i, j) 是一个 陆地 格子。如果 isWater[i][j] == 1 ,格子 (i, j) 是一个 水域 格子。你需要按照如下规则给每个单元格安排高度:每个格子的高度都必

2022-01-29 22:26:10 432

原创 Leetcode 2047 句子中的有效单词数

题目句子仅由小写字母(‘a’ 到 ‘z’)、数字(‘0’ 到 ‘9’)、连字符(’-’)、标点符号(’!’、’.’ 和 ‘,’)以及空格(’ ')组成。每个句子可以根据空格分解成 一个或者多个 token ,这些 token 之间由一个或者多个空格 ’ ’ 分隔。如果一个 token 同时满足下述条件,则认为这个 token 是一个有效单词:仅由小写字母、连字符和/或标点(不含数字)。至多一个 连字符 ‘-’ 。如果存在,连字符两侧应当都存在小写字母(“a-b” 是一个有效单词,但 “-ab” 和

2022-01-27 01:48:29 5572

原创 Leetcode 2013 检测正方形

题目给你一个在 X-Y 平面上的点构成的数据流。设计一个满足下述要求的算法:添加 一个在数据流中的新点到某个数据结构中。可以添加 重复 的点,并会视作不同的点进行处理。给你一个查询点,请你从数据结构中选出三个点,使这三个点和查询点一同构成一个 面积为正 的 轴对齐正方形 ,统计 满足该要求的方案数目。轴对齐正方形 是一个正方形,除四条边长度相同外,还满足每条边都与 x-轴 或 y-轴 平行或垂直。实现 DetectSquares 类:DetectSquares() 使用空数据结构初始化对象vo

2022-01-26 23:34:10 354

原创 Leetcode 1688 比赛中的配对次数

题目给你一个整数 n ,表示比赛中的队伍数。比赛遵循一种独特的赛制:如果当前队伍数是 偶数 ,那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛,且产生 n / 2 支队伍进入下一轮。如果当前队伍数为 奇数 ,那么将会随机轮空并晋级一支队伍,其余的队伍配对。总共进行 (n - 1) / 2 场比赛,且产生 (n - 1) / 2 + 1 支队伍进入下一轮。返回在比赛中进行的配对次数,直到决出获胜队伍为止。解题思路  模拟。代码class Solution { public

2022-01-25 01:05:15 5683

原创 Leetcode 2034 股票价格波动

给你一支股票价格的数据流。数据流中每一条记录包含一个 时间戳 和该时间点股票对应的 价格 。不巧的是,由于股票市场内在的波动性,股票价格记录可能不是按时间顺序到来的。某些情况下,有的记录可能是错的。如果两个有相同时间戳的记录出现在数据流中,前一条记录视为错误记录,后出现的记录 更正 前一条错误的记录。请你设计一个算法,实现:更新 股票在某一时间戳的股票价格,如果有之前同一时间戳的价格,这一操作将 更正 之前的错误价格。找到当前记录里 最新股票价格 。最新股票价格 定义为时间戳最晚的股票价格。找到当

2022-01-23 12:31:55 72

原创 Leetcode 1332 删除回文子序列

题目给你一个字符串 s,它仅由字母 ‘a’ 和 ‘b’ 组成。每一次删除操作都可以从 s 中删除一个回文 子序列。返回删除给定字符串中所有字符(字符串为空)的最小删除次数。「子序列」定义:如果一个字符串可以通过删除原字符串某些字符而不改变原字符顺序得到,那么这个字符串就是原字符串的一个子序列。「回文」定义:如果一个字符串向后和向前读是一致的,那么这个字符串就是一个回文。解题思路  先判断 s 是否为回文串,如果为回文串,那么删除一次即可。又因为 s 只由 a 和 b

2022-01-22 00:15:56 1207

原创 Leetcode 1345 跳跃游戏 IV

题目给你一个整数数组 arr ,你一开始在数组的第一个元素处(下标为 0)。每一步,你可以从下标 i 跳到下标:i + 1 满足:i + 1 < arr.lengthi - 1 满足:i - 1 >= 0j 满足:arr[i] == arr[j] 且 i != j请你返回到达数组最后一个元素的下标处所需的 最少操作次数 。注意:任何时候你都不能跳到数组外面。解题思路  

2022-01-21 19:28:49 2257

原创 Leetcode 219 存在重复元素 II

题目给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j]且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。解题思路  维护一个 map ,遍历数组,每次将 nums[i] 对应的值更新为其下标 i ,如果存在重复元素,即键之前已存在,且之前的键对应的值与当前下标绝对值不大于 k 则返回 true 。代码class S

2022-01-19 20:30:23 606

原创 Leetcode 539 最小时间差

题目给定一个 24 小时制(小时:分钟 “HH:MM”)的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。解题思路  排序。先全部用分钟数表示,再排序依次判断找两个时间相差最小的值。代码class Solution { public int findMinDifference(List<String> timePoints) { int length = timePoints.size(); int[] minutes = new i

2022-01-18 00:17:00 187

原创 Leetcode 1220 统计元音字母序列的数目

题目给你一个整数 n,请你帮忙统计一下我们可以按下述规则形成多少个长度为 n 的字符串:字符串中的每个字符都应当是小写元音字母(‘a’, ‘e’, ‘i’, ‘o’, ‘u’)每个元音 ‘a’ 后面都只能跟着 ‘e’每个元音 ‘e’ 后面只能跟着 ‘a’ 或者是 ‘i’每个元音 ‘i’ 后面 不能 再跟着另一个 ‘i’每个元音 ‘o’&n

2022-01-17 01:02:06 382

原创 Leetcode 382 链表随机节点

题目给你一个单链表,随机选择链表的一个节点,并返回相应的节点值。每个节点 被选中的概率一样 。实现 Solution 类:Solution(ListNode head) 使用整数数组初始化对象。int getRandom() 从链表中随机选择一个节点并返回该节点的值。链表中所有节点被选中的概率相等。解题思路  摆烂做法是用个数组存一下,然后用随机数获取下标返回。进阶做法是蓄水池抽样算法,这个记一下模板了,懒得去关心证明过程。代码摆烂做法class Solution { List&l

2022-01-16 00:33:37 142

原创 Leetcode 1716 计算力扣银行的钱

题目Hercy 想要为购买第一辆车存钱。他 每天 都往力扣银行里存钱。最开始,他在周一的时候存入 1 块钱。从周二到周日,他每天都比前一天多存入 1 块钱。在接下来每一个周一,他都会比 前一个周一 多存入 1 块钱。给你 n ,请你返回在第 n 天结束的时候他在力扣银行总共存了多少块钱。解题思路  先算完整的星期,再算剩余的。代码class Solution { public int totalMoney(int n) {

2022-01-15 00:18:06 88

原创 Leetcode 373 查找和最小的k对数字

题目给定两个以 升序排列 的整数数组 nums1 和 nums2 , 以及一个整数 k 。定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2 。请找到和最小的 k 个数对 (u1,v1),  (u2,v2)  …  (uk,vk) 。解题思路  优先队列。对于一对数 (a1, b1) ,离它最近且比它大的数可能是 (a1 + 1, b1) 或者 (

2022-01-14 22:33:49 490

原创 Leetcode 747 至少是其他数字两倍的最大数

题目给你一个整数数组 nums ,其中总是存在 唯一的 一个最大整数 。请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是,则返回 最大元素的下标 ,否则返回 -1 。解题思路  模拟,找到第一大的和第二大的数判断一下即可。代码class Solution { public int dominantIndex(int[] nums) { int max_value = -1, second_value = -1; int len

2022-01-13 00:49:54 124

原创 Leetcode 1036 逃离大迷宫

题目在一个 10^6 x 10^6 的网格中,每个网格上方格的坐标为 (x, y) 。现在从源方格 source = [sx, sy] 开始出发,意图赶往目标方格 target = [tx, ty] 。数组 blocked 是封锁的方格列表,其中每个 blocked[i] = [xi, yi] 表示坐标为 (xi, yi) 的方格是禁止通行的。每次移动,都可以走到网格中在四个方向上相邻的方格,只要该方格 不 在给出的封锁列表 blocked 

2022-01-11 14:39:25 494

原创 Leetcode 1629 按键持续时间最长的键

题目LeetCode 设计了一款新式键盘,正在测试其可用性。测试人员将会点击一系列键(总计 n 个),每次一个。给你一个长度为 n 的字符串 keysPressed ,其中 keysPressed[i] 表示测试序列中第 i 个被按下的键。releaseTimes 是一个升序排列的列表,其中 releaseTimes[i] 表示松开第 i 个键的时间。字符串和数组的 下标都从 0 开始 。第 0 个键在时间为 0 时被按下,接下来每个键都 恰好 在前一个键松开时被按下。测试人员想要找出按键 持续时间最

2022-01-09 00:13:39 68

原创 Leetcode 1614 括号的最大嵌套深度

题目如果字符串满足以下条件之一,则可以称之为 有效括号字符串(valid parentheses string,可以简写为 VPS):字符串是一个空字符串 “”,或者是一个不为 “(” 或 “)” 的单字符。字符串可以写为 AB(A 与 B 字符串连接),其中 A 和 B 都是 有效括号字符串 。字符串可以写为 (A),其中 A 是一个 有效括号字符串 。类似地,可以定义任何有效括号字符串 S 的 嵌套深度 depth(S):depth("") = 0depth© = 0,

2022-01-07 00:35:18 146 1

原创 Leetcode 71 简化路径

题目给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为更加简洁的规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,’//’)都被视为单个斜杠 ‘/’ 。 对于此问题,任何其他格式的点(例如,’…’)均被视为文件/目录名称。请注意,返回的 规范路径 必须遵循下述格式:始终以斜杠

2022-01-06 12:12:41 56

原创 Leetcode 1576 替换所有的问号

题目给你一个仅包含小写英文字母和 ‘?’ 字符的字符串 s,请你将所有的 ‘?’ 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。注意:你 不能 修改非 ‘?’ 字符。题目测试用例保证 除 ‘?’ 字符 之外,不存在连续重复的字符。在完成所有转换(可能无需转换)后返回最终的字符串。如果有多个解决方案,请返回其中任何一个。可以证明,在给定的约束条件下,答案总是存在的。解题思路  模拟。对于每个 ? ,只可能有 a b c 三种取值,遍历字符串,判断相邻两个元素即可。代码clas

2022-01-05 10:29:49 530

原创 Leetcode 1185 一周中的第几天

题目给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。输入为三个整数:day、month 和 year,分别表示日、月、年。您返回的结果必须是这几个值中的一个 {“Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”}。解题思路  可以直接用库函数,也可以用蔡勒公式,当模拟题写了。百度知 1970 年 12 月 31 日,是星期四,那么计算出给定日期与其相隔的天数,再根据

2022-01-03 22:11:41 74

原创 Leetcode 2022 将一维数组转变成二维数组

题目给你一个下标从 0 开始的一维整数数组 original 和两个整数 m 和  n 。你需要使用 original 中 所有 元素创建一个 m 行 n 列的二维数组。original 中下标从 0 到 n - 1 (都 包含 )的元素构成二维数组的第一行,下标从 n 到 2 * n - 1 (

2022-01-01 02:02:59 246

原创 剑指 Offer II 062. 实现前缀树

解题思路  前缀树模板。代码class Trie { private Trie[] next; boolean isEnd; /** * Initialize your data structure here. */ public Trie() { next = new Trie[26]; isEnd = false; } /** * Inserts a word into the tri

2021-12-31 11:17:00 989

原创 Leetcode 507 完美数

题目对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。给定一个 整数 n, 如果是完美数,返回 true,否则返回 false解题思路  枚举出所有的因子,求和判断即可。代码class Solution { public boolean checkPerfectNumber(int num) { if (num <= 1) return false; int cnt =

2021-12-31 10:47:47 109

原创 Leetcode 846 一手顺子

题目Alice 手中有一把牌,她想要重新排列这些牌,分成若干组,使每一组的牌数都是 groupSize ,并且由 groupSize 张连续的牌组成。给你一个整数数组 hand 其中 hand[i] 是写在第 i 张牌,和一个整数 groupSize 。如果她可能重新排列这些牌,返回 true ;否则,返回 false解题思路  模拟。将每个牌出现的次数用哈希计数,再从小到大枚举顺子的起始牌,按照 groupSize 的长度依次更新牌数,如果出现牌数不够的情况则返回 false 。 TreeMap

2021-12-30 11:51:28 225

原创 Leetcode 1995 统计特殊四元组

题目给你一个 下标从 0 开始 的整数数组 nums ,返回满足下述条件的 不同 四元组 (a, b, c, d) 的 数目 :nums[a] + nums[b] + nums[c] == nums[d] ,且a < b < c < d解题思路  数组长度只有50,直接四层循环暴力可以写,时间复杂度为O(n4{n^4}n4)。由于 nums[a] + nums[b] + nums[c] 可以直接得到 nums[d] ,那么可以用哈希表来查询 nums[d] 是否存在。这个题强制

2021-12-29 10:23:53 252

原创 Leecode 472 连接词

题目给你一个 不含重复 单词的字符串数组 words ,请你找出并返回 words 中的所有 连接词 。连接词 定义为:一个完全由给定数组中的至少两个较短单词组成的字符串。解题思路  字典树+DFS。这里我们定义非连接词为 连接子串 。  首先对于连接词,其长度必定比每一个连接字串的长度要长。对于这个题,我们可以先按照长度的升序,对所有字符串进行排序。对于排完序后的字符串,第 i 个字符串如果是连接词,那么其连接子串必定在前 i - 1 个字符串中。我们可以构建一个实时更新的字典树,我们希望把所有

2021-12-28 16:02:08 242

原创 Leetcode 208 实现 Trie (前缀树)

题目Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现 Trie 类:Trie() 初始化前缀树对象。void insert(String word) 向前缀树中插入字符串 word 。boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false 。boolean startsWit

2021-12-28 13:01:54 78

原创 Leetcode 825 适龄的朋友

题目在社交媒体网站上有 n 个用户。给你一个整数数组 ages ,其中 ages[i] 是第 i 个用户的年龄。如果下述任意一个条件为真,那么用户 x 将不会向用户 y(x != y)发送好友请求:age[y] <= 0.5 * age[x] + 7age[y] > age[x]age[y] > 100 && age[x] < 100否则,x 将会向 y 发送一条好友请求。注意,如果 x 向 y 发送一条好友请求,y 不必也向 x 发送一条好友请求。另外

2021-12-27 12:55:57 1184

原创 Leetcode 1078 Bigram 分词

题目给出第一个词 first 和第二个词 second,考虑在某些文本 text 中可能以 “first second third” 形式出现的情况,其中 second 紧随 first 出现,third 紧随 second 出现。对于每种这样的情况,将第三个词 “third” 添加到答案中,并返回答案。解题思路  直接字符串判断就行,但我是懒狗,直接用 split 函数把所有单词分开,再每

2021-12-26 10:50:25 654

原创 Leetcode 1609 奇偶树

题目如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 :二叉树根节点所在层下标为 0 ,根的子节点所在层下标为 1 ,根的孙节点所在层下标为 2 ,依此类推。偶数下标 层上的所有节点的值都是 奇 整数,从左到右按顺序 严格递增奇数下标 层上的所有节点的值都是 偶 整数,从左到右按顺序 严格递减给你二叉树的根节点,如果二叉树为 奇偶树 ,则返回 true ,否则返回 false 。解题思路  BFS和DFS都可以写,DFS有递归会涉及到重复遍历的过程,BFS的优势就体现出来了。但这里只贴了DF

2021-12-25 13:28:09 159

原创 Leetcode 1705 吃苹果的最大数目

题目有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。你打算每天 最多 吃一个苹果来保证营养均衡。注意,你可以在这 n 天之后继续吃苹果。给你两个长度为 n 的整数数组 days 和 apples ,返回你可以吃掉的苹果的最大

2021-12-24 16:15:50 196

原创 Leetcode 1044 最长重复子串

题目给你一个字符串 s ,考虑其所有 重复子串 :即,s 的连续子串,在 s 中出现 2 次或更多次。这些出现之间可能存在重叠。返回 任意一个 具有最长长度的重复子串。如果 s 不含重复子串,那么答案为 “” 。解题思路  如果枚举重复子串的长度,用滑动窗口和哈希来判重,必定超时。我们有两个可以优化的地方。第一个是枚举重复子串的长度,对于这个长度,大于这个长度的子串中必定不会出现重复子串,小于这个长度的子串中必定会出现重复字串,其具有二分性,那么这里可以用到二分,这里变成了O(lognlognl

2021-12-24 11:36:26 449

原创 Leetcode 1154 一年中的第几天

题目给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。请你计算并返回该日期是当年的第几天。通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。解题思路  模拟即可,也可以用库函数。代码class Solution { public int dayOfYear(String date) { String[] yearMonthDa

2021-12-21 09:56:25 501

原创 Leetcode 475 供暖器

题目冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。在加热器的加热半径范围内的每个房屋都可以获得供暖。现在,给出位于一条水平线上的房屋 houses 和供暖器 heaters 的位置,请你找出并返回可以覆盖所有房屋的最小加热半径。说明:所有供暖器都遵循你的半径标准,加热的半径也一样。解题思路  二分查找。可以枚举供暖的半径,每次判断供暖器是否能覆盖所有房屋,直到不能完全覆盖。对于枚举的过程可以用二分加速。代码class Solution

2021-12-20 14:12:33 79

typora-setup

Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。这个软件很简洁,使用也很方便 。

2018-09-03

空空如也

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

TA关注的人

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