
golang
惠菁
我见过大海,看过繁星,但唯独遇见你,是我长久以来,所有奔赴的意义。
展开
-
【Java|golang】2103. 环和杆---位运算
总计有 n 个环,环的颜色可以是红、绿、蓝中的一种。这些环分别穿在 10 根编号为 0 到 9 的杆上。给你一个长度为 2n 的字符串 rings ,表示这 n 个环在杆上的分布。rings 中每两个字符形成一个 颜色位置对 ,用于描述每个环:第 i 对中的 第一个 字符表示第 i 个环的 颜色('R'、'G'、'B')。第 i 对中的 第二个 字符表示第 i 个环的 位置,也就是位于哪根杆上('0' 到 '9')。例如,"R3G2B1" 表示:共有 n == 3 个环,红色的环在编号为 3 的原创 2023-11-02 19:55:48 · 376 阅读 · 0 评论 -
【java|golang】多字段排序以及排序规则
给你两个字符串数组 positive_feedback 和 negative_feedback ,分别包含表示正面的和负面的词汇。不会 有单词同时是正面的和负面的。一开始,每位学生分数为 0 。每个正面的单词会给学生的分数 加 3 分,每个负面的词会给学生的分数 减 1 分。给你 n 个学生的评语,用一个下标从 0 开始的字符串数组 report 和一个下标从 0 开始的整数数组 student_id 表示,其中 student_id[i] 表示这名学生的 ID ,这名学生的评语是 report[原创 2023-10-11 11:15:38 · 567 阅读 · 1 评论 -
【Java|golang】210. 课程表 II---拓扑排序
拓扑排序的定义:先引用一段百度百科上对于拓扑排序的定义:对一个有向无环图 ( Directed Acyclic Graph 简称 DAG ) G 进行拓扑排序,是将 G中所有顶点排成一个线性序列,使得图中任意一对顶点 u 和 v ,若边 < u , v > ∈ E ( G ),则 u 在线性序列中出现在 v之前。通常,这样的线性序列称为满足拓扑次序 ( Topological Order )的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。原创 2023-09-11 16:06:00 · 423 阅读 · 0 评论 -
【Java|golang】143. 重排链表---快慢指针
给定一个单链表 L 的头节点 head ,单链表 L 表示为:L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为:L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。原创 2023-07-31 12:00:44 · 523 阅读 · 0 评论 -
【Java|golang】2500. 删除每行中的最大值
给你一个 m x n 大小的矩阵 grid ,由若干正整数组成。执行下述操作,直到 grid 变为空矩阵:从每一行删除值最大的元素。如果存在多个这样的值,删除其中任何一个。将删除元素中的最大值与答案相加。注意 每执行一次操作,矩阵中列的数据就会减 1 。返回执行上述操作后的答案。原创 2023-07-28 14:56:04 · 505 阅读 · 0 评论 -
【Java|golang】860. 柠檬水找零
柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。原创 2023-07-26 18:02:02 · 390 阅读 · 0 评论 -
【Java|golang】415. 字符串相加
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。原创 2023-07-17 18:00:00 · 490 阅读 · 0 评论 -
【Java|golang】2679. 矩阵中的和
给你一个下标从 0 开始的二维整数数组 nums 。一开始你的分数为 0 。你需要执行以下操作直到矩阵变为空:矩阵中每一行选取最大的一个数,并删除它。如果一行中有多个最大的数,选择任意一个并删除。在步骤 1 删除的所有数字中找到最大的一个数字,将它添加到你的 分数 中。请你返回最后的 分数 。原创 2023-07-04 18:15:00 · 830 阅读 · 0 评论 -
【Java|golang】1171. 从链表中删去总和值为零的连续节点
给你一个链表的头节点 head,请你编写代码,反复删去链表中由 总和 值为 0 的连续节点组成的序列,直到不存在这样的序列为止。删除完毕后,请你返回最终结果链表的头节点。 你可以返回任何满足题目要求的答案。(注意,下面示例中的所有序列,都是对 ListNode 对象序列化的表示。)原创 2023-06-12 19:45:00 · 750 阅读 · 0 评论 -
【Java|golang】2465. 不同的平均值数目
给你一个下标从 0 开始长度为 偶数 的整数数组 nums 。只要 nums 不是 空数组,你就重复执行以下步骤:找到 nums 中的最小值,并删除它。找到 nums 中的最大值,并删除它。计算删除两数的平均值。两数 a 和 b 的 平均值 为 (a + b) / 2 。比方说,2 和 3 的平均值是 (2 + 3) / 2 = 2.5 。返回上述过程能得到的 不同 平均值的数目。注意 ,如果最小值或者最大值有重复元素,可以删除任意一个。原创 2023-06-09 21:15:00 · 1190 阅读 · 0 评论 -
【Java|golang】2460. 对数组执行操作
给你一个下标从 0 开始的数组 nums ,数组大小为 n ,且由 非负 整数组成。你需要对数组执行 n - 1 步操作,其中第 i 步操作(从 0 开始计数)要求对 nums 中第 i 个元素执行下述指令:如果 nums[i] == nums[i + 1] ,则 nums[i] 的值变成原来的 2 倍,nums[i + 1] 的值变成 0 。否则,跳过这步操作。在执行完 全部 操作后,将所有 0 移动 到数组的 末尾 。例如,数组 [1,0,2,0,0,1] 将所有 0 移动到末尾后变为 [原创 2023-06-08 18:00:00 · 668 阅读 · 0 评论 -
【Java|golang】2559. 统计范围内的元音字符串数
给你一个下标从 0 开始的字符串数组 words 以及一个二维整数数组 queries 。每个查询 queries[i] = [li, ri] 会要求我们统计在 words 中下标在 li 到 ri 范围内(包含 这两个值)并且以元音开头和结尾的字符串的数目。返回一个整数数组,其中数组的第 i 个元素对应第 i 个查询的答案。注意:元音字母是 'a'、'e'、'i'、'o' 和 'u' 。原创 2023-06-02 15:47:13 · 390 阅读 · 0 评论 -
【Java|golang】1091. 二进制矩阵中的最短路径0---bfs
给你一个 n x n 的二进制矩阵 grid 中,返回矩阵中最短 畅通路径 的长度。如果不存在这样的路径,返回 -1 。二进制矩阵中的 畅通路径 是一条从 左上角 单元格(即,(0, 0))到 右下角 单元格(即,(n - 1, n - 1))的路径,该路径同时满足下述要求:路径途经的所有单元格都的值都是 0 。路径中所有相邻的单元格应当在 8 个方向之一 上连通(即,相邻两单元之间彼此不同且共享一条边或者一个角)。畅通路径的长度 是该路径途经的单元格总数。原创 2023-05-26 18:15:00 · 332 阅读 · 0 评论 -
【Java|golang】1090. 受标签影响的最大值---关联数组排序问题以及切片排序失败
我们有一个 n 项的集合。给出两个整数数组 values 和 labels ,第 i 个元素的值和标签分别是 values[i] 和 labels[i]。还会给出两个整数 numWanted 和 useLimit 。从 n 个元素中选择一个子集 s :子集 s 的大小 小于或等于 numWanted 。s 中 最多 有相同标签的 useLimit 项。一个子集的 分数 是该子集的值之和。返回子集 s 的最大 分数 。原创 2023-05-23 19:15:00 · 669 阅读 · 0 评论 -
【Java|golang】1080. 根到叶路径上的不足节点--dfs
节点。假如通过节点 node 的每种可能的 “根-叶” 路径上值的总和全都小于给定的 limit,则该节点被称之为 不足节点 ,需要被删除。叶子节点,就是没有子节点的节点。原创 2023-05-22 18:15:00 · 713 阅读 · 0 评论 -
【Java|golang】1079. 活字印刷---dfs+回溯
你有一套活字字模 tiles,其中每个字模上都刻有一个字母 tiles[i]。返回你可以印出的非空字母序列的数目。注意:本题中,每个活字字模只能使用一次。原创 2023-05-19 20:35:10 · 252 阅读 · 0 评论 -
【Java|golang】1072. 按列翻转得到最大值等行数
给定 m x n 矩阵 matrix 。你可以从中选出任意数量的列并翻转其上的 每个 单元格。(即翻转后,单元格的值从 0 变成 1,或者从 1 变为 0 。)返回 经过一些翻转后,行与行之间所有值都相等的最大行数 。原创 2023-05-15 19:15:00 · 692 阅读 · 0 评论 -
【Java|golang】1016. 子串能表示从 1 到 N 数字的二进制串---数字转化成二进制字符串
给定一个二进制字符串 s 和一个正整数 n,如果对于 [1, n] 范围内的每个整数,其二进制表示都是 s 的 子字符串 ,就返回 true,否则返回 false 。子字符串 是字符串中连续的字符序列。原创 2023-05-11 17:41:00 · 345 阅读 · 0 评论 -
【Java|golang】1015. 可被 K 整除的最小整数
给定正整数 k ,你需要找出可以被 k 整除的、仅包含数字 1 的最 小 正整数 n 的长度。返回 n 的长度。如果不存在这样的 n ,就返回-1。注意: n 不符合 64 位带符号整数。原创 2023-05-10 18:00:00 · 318 阅读 · 0 评论 -
【Java|golang】2437. 有效时间的数目
给你一个长度为 5 的字符串 time ,表示一个电子时钟当前的时间,格式为 "hh:mm" 。最早 可能的时间是 "00:00" ,最晚 可能的时间是 "23:59" 。在字符串 time 中,被字符 ? 替换掉的数位是 未知的 ,被替换的数字可能是 0 到 9 中的任何一个。请你返回一个整数 answer ,将每一个 ? 都用 0 到 9 中一个数字替换后,可以得到的有效时间的数目。原创 2023-05-09 20:49:00 · 626 阅读 · 0 评论 -
【Java|golang】1010. 总持续时间可被 60 整除的歌曲
在歌曲列表中,第 i 首歌曲的持续时间为 time[i] 秒。返回其总持续时间(以秒为单位)可被 60 整除的歌曲对的数量。形式上,我们希望下标数字 i 和 j 满足 i < j 且有 (time[i] + time[j]) % 60 == 0。原创 2023-05-08 18:15:00 · 648 阅读 · 0 评论 -
【Java|golang】1419. 数青蛙
给你一个字符串 croakOfFrogs,它表示不同青蛙发出的蛙鸣声(字符串 "croak" )的组合。由于同一时间可以有多只青蛙呱呱作响,所以 croakOfFrogs 中会混合多个 “croak” 。请你返回模拟字符串中所有蛙鸣所需不同青蛙的最少数目。要想发出蛙鸣 "croak",青蛙必须 依序 输出 ‘c’, ’r’, ’o’, ’a’, ’k’ 这 5 个字母。如果没有输出全部五个字母,那么它就不会发出声音。如果字符串 croakOfFrogs 不是由若干有效的 "croak" 字符混合而成原创 2023-05-06 18:15:00 · 786 阅读 · 0 评论 -
【Java|golang】2432. 处理用时最长的那个任务的员工
共有 n 位员工,每位员工都有一个从 0 到 n - 1 的唯一 id 。给你一个二维整数数组 logs ,其中 logs[i] = [idi, leaveTimei] :idi 是处理第 i 个任务的员工的 id ,且leaveTimei 是员工完成第 i 个任务的时刻。所有 leaveTimei 的值都是 唯一 的。注意,第 i 个任务在第 (i - 1) 个任务结束后立即开始,且第 0 个任务从时刻 0 开始。返回处理用时最长的那个任务的员工的 id 。如果存在两个或多个员工同时满足,原创 2023-05-05 18:00:00 · 806 阅读 · 0 评论 -
【Java|golang】1003. 检查替换后的词是否有效
给你一个字符串 s ,请你判断它是否 有效 。字符串 s 有效 需要满足:假设开始有一个空字符串 t = "" ,你可以执行 任意次 下述操作将 t 转换为 s :将字符串 "abc" 插入到 t 中的任意位置。形式上,t 变为 tleft + "abc" + tright,其中 t == tleft + tright 。注意,tleft 和 tright 可能为 空 。如果字符串 s 有效,则返回 true;否则,返回 false。原创 2023-05-04 18:15:00 · 704 阅读 · 0 评论 -
【Java|golang】1048. 最长字符串链
给出一个单词数组 words ,其中每个单词都由小写英文字母组成。如果我们可以 不改变其他字符的顺序 ,在 wordA 的任何地方添加 恰好一个 字母使其变成 wordB ,那么我们认为 wordA 是 wordB 的 前身 。例如,"abc" 是 "abac" 的 前身 ,而 "cba" 不是 "bcad" 的 前身词链是单词 [word_1, word_2, ..., word_k] 组成的序列,k >= 1,其中 word1 是 word2 的前身,word2 是 word3 的前身,依此类原创 2023-04-27 18:00:00 · 542 阅读 · 0 评论 -
【Java|golang】1031. 两个非重叠子数组的最大和---前缀和+滑动窗口
给你一个整数数组 nums 和两个整数 firstLen 和 secondLen,请你找出并返回两个非重叠 子数组 中元素的最大和,长度分别为 firstLen 和 secondLen 。长度为 firstLen 的子数组可以出现在长为 secondLen 的子数组之前或之后,但二者必须是不重叠的。子数组是数组的一个 连续 部分。原创 2023-04-26 18:00:00 · 589 阅读 · 0 评论 -
【Java|golang】1027. 最长等差数列---动态规划
给你一个整数数组 nums,返回 nums 中最长等差子序列的长度。回想一下,nums 的子序列是一个列表 nums[i1], nums[i2], ..., nums[ik] ,且 0原创 2023-04-24 18:15:00 · 284 阅读 · 0 评论 -
【Java|golang】1105. 填充书架---动态规划
给定一个数组 books ,其中 books[i] = [thicknessi, heighti] 表示第 i 本书的厚度和高度。你也会得到一个整数 shelfWidth 。按顺序 将这些书摆放到总宽度为 shelfWidth 的书架上。先选几本书放在书架上(它们的厚度之和小于等于书架的宽度 shelfWidth ),然后再建一层书架。重复这个过程,直到把所有的书都放在书架上。需要注意的是,在上述过程的每个步骤中,摆放书的顺序与你整理好的顺序相同。例如,如果这里有 5 本书,那么可能的一种摆原创 2023-04-23 18:00:00 · 614 阅读 · 0 评论 -
【Java|golang】1042. 不邻接植花---邻接表着色
有 n 个花园,按从 1 到 n 标记。另有数组 paths ,其中 paths[i] = [xi, yi] 描述了花园 xi 到花园 yi 的双向路径。在每个花园中,你打算种下四种花之一。另外,所有花园 最多 有 3 条路径可以进入或离开.你需要为每个花园选择一种花,使得通过路径相连的任何两个花园中的花的种类互不相同。以数组形式返回 任一 可行的方案作为答案 answer,其中 answer[i] 为在第 (i+1) 个花园中种植的花的种类。花的种类用 1、2、3、4 表示。保证存在答案。原创 2023-04-20 18:15:00 · 699 阅读 · 0 评论 -
【Java|golang】1043. 分隔数组以得到最大和---动态规划
给你一个整数数组 arr,请你将该数组分隔为长度 最多 为 k 的一些(连续)子数组。分隔完成后,每个子数组的中的所有值都会变为该子数组中的最大值。返回将数组分隔变换后能够得到的元素最大和。本题所用到的测试用例会确保答案是一个 32 位整数。原创 2023-04-19 18:00:00 · 364 阅读 · 0 评论 -
【Java|golang】1026. 节点与其祖先之间的最大差值---避坑,注意:golang中同一个包下的全局变量只加载一次。
给定二叉树的根节点 root,找出存在于 不同 节点 A 和 B 之间的最大值 V,其中 V = |A.val - B.val|,且 A 是 B 的祖先。(如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先)原创 2023-04-18 10:56:58 · 424 阅读 · 0 评论 -
【Java|golang】2409. 统计共同度过的日子数---golang中全局变量带来的坑
Alice 和 Bob 计划分别去罗马开会。给你四个字符串 arriveAlice ,leaveAlice ,arriveBob 和 leaveBob 。Alice 会在日期 arriveAlice 到 leaveAlice 之间在城市里(日期为闭区间),而 Bob 在日期 arriveBob 到 leaveBob 之间在城市里(日期为闭区间)。每个字符串都包含 5 个字符,格式为 "MM-DD" ,对应着一个日期的月和日。请你返回 Alice和 Bob 同时在罗马的天数。你可以假设所有日期都在原创 2023-04-17 18:00:00 · 639 阅读 · 0 评论 -
【Java|golang】1041. 困于环中的机器人
在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。注意:北方向 是y轴的正方向。南方向 是y轴的负方向。东方向 是x轴的正方向。西方向 是x轴的负方向。机器人可以接受下列三条指令之一:"G":直走 1 个单位"L":左转 90 度"R":右转 90 度机器人按顺序执行指令 instructions,并一直重复它们。只有在平面中存在环使得机器人永远无法离开时,返回 true。否则,返回 false。原创 2023-04-12 18:15:00 · 1039 阅读 · 0 评论 -
【Java|golang】1019. 链表中的下一个更大节点---倒序实现栈
给定一个长度为 n 的链表 head对于列表中的每个节点,查找下一个 更大节点 的值。也就是说,对于每个节点,找到它旁边的第一个节点的值,这个节点的值 严格大于 它的值。返回一个整数数组 answer ,其中 answer[i] 是第 i 个节点( 从1开始 )的下一个更大的节点的值。如果第 i 个节点没有下一个更大的节点,设置 answer[i] = 0 。原创 2023-04-10 19:00:00 · 372 阅读 · 0 评论 -
【Java|golang】1040. 移动石子直到连续 II---滑动窗口
在一个长度 无限 的数轴上,第 i 颗石子的位置为 stones[i]。如果一颗石子的位置最小/最大,那么该石子被称作 端点石子 。每个回合,你可以将一颗端点石子拿起并移动到一个未占用的位置,使得该石子不再是一颗端点石子。值得注意的是,如果石子像 stones = [1,2,5] 这样,你将 无法 移动位于位置 5 的端点石子,因为无论将它移动到任何位置(例如 0 或 3),该石子都仍然会是端点石子。当你无法进行任何移动时,即,这些石子的位置连续时,游戏结束。要使游戏结束,你可以执行的最小和原创 2023-04-07 20:00:00 · 598 阅读 · 0 评论 -
【Java|golang】1017. 负二进制转换
给你一个整数 n ,以二进制字符串的形式返回该整数的 负二进制(base -2)表示。注意,除非字符串就是 "0",否则返回的字符串中不能含有前导零。原创 2023-04-06 18:15:00 · 589 阅读 · 0 评论 -
【Java|golang】831. 隐藏个人信息---正则表达式
给你一条个人信息字符串 s ,可能表示一个 邮箱地址 ,也可能表示一串 电话号码 。返回按如下规则 隐藏 个人信息后的结果:电子邮件地址:一个电子邮件地址由以下部分组成:一个 名字 ,由大小写英文字母组成,后面跟着一个 '@' 字符,后面跟着一个 域名 ,由大小写英文字母和一个位于中间的 '.' 字符组成。'.' 不会是域名的第一个或者最后一个字符。要想隐藏电子邮件地址中的个人信息:名字 和 域名 部分的大写英文字母应当转换成小写英文字母。名字 中间的字母(即,除第一个和最后一个字母原创 2023-04-04 10:05:29 · 698 阅读 · 0 评论 -
【Java|golang】1053. 交换一次的先前排列
给你一个正整数数组 arr(可能存在重复的元素),请你返回可在 一次交换(交换两数字 arr[i] 和 arr[j] 的位置)后得到的、按字典序排列小于 arr 的最大排列。如果无法这么操作,就请返回原数组。原创 2023-04-03 18:45:00 · 444 阅读 · 0 评论 -
【Java|golang】2367. 算术三元组的数目---判断等差数列时间复杂度O(N)
给你一个下标从 0 开始、严格递增 的整数数组 nums 和一个正整数 diff 。如果满足下述全部条件,则三元组 (i, j, k) 就是一个 算术三元组 :i < j < k ,nums[j] - nums[i] == diff 且nums[k] - nums[j] == diff返回不同 算术三元组 的数目。原创 2023-03-31 10:11:05 · 351 阅读 · 0 评论 -
【Java|golang】1641. 统计字典序元音字符串的数目---动态规划
给你一个整数 n,请返回长度为 n 、仅由元音 (a, e, i, o, u) 组成且按 字典序排列 的字符串数量。字符串 s 按 字典序排列 需要满足:对于所有有效的 i,s[i] 在字母表中的位置总是与 s[i+1] 相同或在 s[i+1] 之前。原创 2023-03-29 17:54:27 · 120 阅读 · 0 评论