摘要:KMP模板 class Solution { public: int strStr(string haystack, string needle) { int n = haystack.size(); int m = needle.size(); if (m == 0) { return 0; } 阅读全文
posted @ 2021-04-20 09:19 _西瓜不甜 阅读(2) 评论(0) 推荐(0) 编辑
摘要:你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。 给定一个代表每个房屋存放金额的非负整数数组,计算你 在不 阅读全文
posted @ 2021-04-15 08:57 _西瓜不甜 阅读(10) 评论(0) 推荐(0) 编辑
摘要:给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/ /** * Definition for a binary tree nod 阅读全文
posted @ 2021-04-13 08:55 _西瓜不甜 阅读(5) 评论(0) 推荐(0) 编辑
摘要:已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2] 若旋转 4 次,则可以得到 [0,1,2,4,5,6,7] 注意,数 阅读全文
posted @ 2021-04-08 08:55 _西瓜不甜 阅读(5) 评论(0) 推荐(0) 编辑
摘要:反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明: 1 ≤ m ≤ n ≤ 链表长度。 示例: 输入: 1->2->3->4->5->NULL, m = 2, n = 4 输出: 1->4->3->2->5->NULL 来源:力扣(LeetCode) 链接:https://leetco 阅读全文
posted @ 2021-03-18 08:52 _西瓜不甜 阅读(10) 评论(0) 推荐(0) 编辑
摘要:Alice 和 Bob 共有一个无向图,其中包含 n 个节点和 3 种类型的边: 类型 1:只能由 Alice 遍历。 类型 2:只能由 Bob 遍历。 类型 3:Alice 和 Bob 都可以遍历。 给你一个数组 edges ,其中 edges[i] = [typei, ui, vi] 表示节点 阅读全文
posted @ 2021-01-27 23:30 _西瓜不甜 阅读(31) 评论(0) 推荐(0) 编辑
摘要:用以太网线缆将 n 台计算机连接成一个网络,计算机的编号从 0 到 n-1。线缆用 connections 表示,其中 connections[i] = [a, b] 连接了计算机 a 和 b。 网络中的任何一台计算机都可以通过网络直接或者间接访问同一个网络中其他任意一台计算机。 给你这个计算机网络 阅读全文
posted @ 2021-01-24 23:52 _西瓜不甜 阅读(22) 评论(0) 推荐(0) 编辑
摘要:给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] = [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi = values[i] 。每个 Ai 或 Bi 是一个表示单个变量的字符串。 另有一些以数组 querie 阅读全文
posted @ 2021-01-21 10:14 _西瓜不甜 阅读(18) 评论(0) 推荐(0) 编辑
摘要:给你一个 n 个点的带权无向连通图,节点编号为 0 到 n-1 ,同时还有一个数组 edges ,其中 edges[i] = [fromi, toi, weighti] 表示在 fromi 和 toi 节点之间有一条带权无向边。最小生成树 (MST) 是给定图中边的一个子集,它连接了所有节点且没有环 阅读全文
posted @ 2021-01-21 09:38 _西瓜不甜 阅读(61) 评论(0) 推荐(0) 编辑
摘要:给你一个字符串 s,以及该字符串中的一些「索引对」数组 pairs,其中 pairs[i] = [a, b] 表示字符串中的两个索引(编号从 0 开始)。 你可以 任意多次交换 在 pairs 中任意一对索引处的字符。 返回在经过若干次交换后,s 可以变成的按字典序最小的字符串。 示例 1: 输入: 阅读全文
posted @ 2021-01-20 11:12 _西瓜不甜 阅读(33) 评论(0) 推荐(0) 编辑
摘要:在本问题中, 树指的是一个连通且无环的无向图。 输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, ..., N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。 结果图是一个以边组成的二维数组。每一个边的元素是一对[u, v] ,满足 u 阅读全文
posted @ 2021-01-20 09:53 _西瓜不甜 阅读(30) 评论(0) 推荐(0) 编辑
摘要:n 块石头放置在二维平面中的一些整数坐标点上。每个坐标点上最多只能有一块石头。 如果一块石头的 同行或者同列 上有其他石头存在,那么就可以移除这块石头。 给你一个长度为 n 的数组 stones ,其中 stones[i] = [xi, yi] 表示第 i 块石头的位置,返回 可以移除的石子 的最大 阅读全文
posted @ 2021-01-20 09:28 _西瓜不甜 阅读(31) 评论(0) 推荐(0) 编辑
摘要:给定一个列表 accounts,每个元素 accounts[i] 是一个字符串列表,其中第一个元素 accounts[i][0] 是 名称 (name),其余元素是 emails 表示该账户的邮箱地址。 现在,我们想合并这些账户。如果两个账户都有一些共同的邮箱地址,则两个账户必定属于同一个人。请注意 阅读全文
posted @ 2021-01-18 09:22 _西瓜不甜 阅读(47) 评论(0) 推荐(0) 编辑
摘要:给你一个链表和一个特定值 x ,请你对链表进行分隔,使得所有小于 x 的节点都出现在大于或等于 x 的节点之前。 你应当保留两个分区中每个节点的初始相对位置。 示例: 输入:head = 1->4->3->2->5->2, x = 3 输出:1->2->2->4->3->5 来源:力扣(LeetCo 阅读全文
posted @ 2021-01-04 15:07 _西瓜不甜 阅读(32) 评论(0) 推荐(0) 编辑
摘要:有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 d 阅读全文
posted @ 2020-12-28 09:07 _西瓜不甜 阅读(47) 评论(0) 推荐(0) 编辑
摘要:给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入:k = 2, prices = 阅读全文
posted @ 2020-12-28 08:59 _西瓜不甜 阅读(50) 评论(0) 推荐(0) 编辑
摘要:给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 注意:该题与 1081 https://leetcode-cn.com/problems/smallest-subsequence-of-distinct-ch 阅读全文
posted @ 2020-12-21 14:39 _西瓜不甜 阅读(49) 评论(0) 推荐(0) 编辑
摘要:给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 一开始你在下标 0 处。每一步,你最多可以往前跳 k 步,但你不能跳出数组的边界。也就是说,你可以从下标 i 跳到 [i + 1, min(n - 1, i + k)] 包含 两个端点的任意位置。 你的目标是到达数组最后一个位置(下标 阅读全文
posted @ 2020-12-21 14:22 _西瓜不甜 阅读(53) 评论(0) 推荐(0) 编辑
摘要:给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 示例 1: 给定 matrix = [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入矩阵,使其 阅读全文
posted @ 2020-12-19 11:04 _西瓜不甜 阅读(56) 评论(0) 推荐(0) 编辑
摘要:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 来源:力扣(LeetCode) 链接:https://leetcode-c 阅读全文
posted @ 2020-12-18 08:56 _西瓜不甜 阅读(57) 评论(0) 推荐(0) 编辑
摘要:给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。 你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。 返回获得利润的最大值。 注意:这里的一笔交易指买入持有 阅读全文
posted @ 2020-12-17 09:04 _西瓜不甜 阅读(44) 评论(0) 推荐(0) 编辑
摘要:n 个人,每个人都有一个 0 到 n-1 的唯一 id 。 给你数组 watchedVideos 和 friends ,其中 watchedVideos[i] 和 friends[i] 分别表示 id = i 的人观看过的视频列表和他的好友列表。 Level 1 的视频包含所有你好友观看过的视频,l 阅读全文
posted @ 2020-12-16 15:17 _西瓜不甜 阅读(66) 评论(0) 推荐(0) 编辑
摘要:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ] 说明: 阅读全文
posted @ 2020-12-16 09:14 _西瓜不甜 阅读(47) 评论(0) 推荐(0) 编辑
摘要:给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。 示例1: 输入: pattern = "abba", str = "dog cat 阅读全文
posted @ 2020-12-16 09:13 _西瓜不甜 阅读(43) 评论(0) 推荐(0) 编辑
摘要:石子游戏中,爱丽丝和鲍勃轮流进行自己的回合,爱丽丝先开始 。 有 n 块石子排成一排。每个玩家的回合中,可以从行中 移除 最左边的石头或最右边的石头,并获得与该行中剩余石头值之 和 相等的得分。当没有石头可移除时,得分较高者获胜。 鲍勃发现他总是输掉游戏(可怜的鲍勃,他总是输),所以他决定尽力 减小 阅读全文
posted @ 2020-12-13 16:59 _西瓜不甜 阅读(37) 评论(0) 推荐(0) 编辑
摘要:给定一个数字字符串 S,比如 S = "123456579",我们可以将它分成斐波那契式的序列 [123, 456, 579]。 形式上,斐波那契式序列是一个非负整数列表 F,且满足: 0 ⇐ F[i] ⇐ 2^31 - 1,(也就是说,每个整数都符合 32 位有符号整数类型); F.length 阅读全文
posted @ 2020-12-09 09:10 _西瓜不甜 阅读(34) 评论(0) 推荐(0) 编辑
摘要:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 别去真的dfs,会超时,用动态规划 class Solution { public 阅读全文
posted @ 2020-12-09 08:50 _西瓜不甜 阅读(45) 评论(0) 推荐(0) 编辑
摘要:有一个二维矩阵 A 其中每个元素的值为 0 或 1 。 移动是指选择任一行或列,并转换该行或列中的每一个值:将所有 0 都更改为 1,将所有 1 都更改为 0。 在做出任意次数的移动后,将该矩阵的每一行都按照二进制数来解释,矩阵的得分就是这些数字的总和。 返回尽可能高的分数。 示例: 输入:[[0, 阅读全文
posted @ 2020-12-07 14:17 _西瓜不甜 阅读(38) 评论(0) 推荐(0) 编辑
摘要:给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。 然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却 阅读全文
posted @ 2020-12-06 21:16 _西瓜不甜 阅读(100) 评论(0) 推荐(0) 编辑
摘要:class Solution { public: int countPrimes(int n) { int ans = 0; vector <bool> is(n, true); for (int i = 2; i < n; i++) { if (is[i]) { ans++; for (int j 阅读全文
posted @ 2020-12-03 08:43 _西瓜不甜 阅读(15) 评论(0) 推荐(0) 编辑
摘要:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 进阶: 你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗? 示例 1: 输入:nums = [5,7, 阅读全文
posted @ 2020-12-02 09:51 _西瓜不甜 阅读(39) 评论(0) 推荐(0) 编辑
摘要:给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。 如果数组元素个数小于 2,则返回 0。 示例 1: 输入: [3,6,9,1] 输出: 3 解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。 示例 2: 输入: [10] 阅读全文
posted @ 2020-11-26 10:30 _西瓜不甜 阅读(43) 评论(0) 推荐(0) 编辑
摘要:给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 进阶: 你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/sort-list 著作权归 阅读全文
posted @ 2020-11-21 09:40 _西瓜不甜 阅读(57) 评论(0) 推荐(0) 编辑
摘要:插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示 阅读全文
posted @ 2020-11-20 09:08 _西瓜不甜 阅读(48) 评论(0) 推荐(0) 编辑
摘要:恢复内容开始 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返 阅读全文
posted @ 2020-11-18 08:50 _西瓜不甜 阅读(57) 评论(0) 推荐(0) 编辑
摘要:假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。 注意: 总人数少于1100人。 示例 输入: [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2] 阅读全文
posted @ 2020-11-16 08:30 _西瓜不甜 阅读(67) 评论(0) 推荐(0) 编辑
摘要:有一只跳蚤的家在数轴上的位置 x 处。请你帮助它从位置 0 出发,到达它的家。 跳蚤跳跃的规则如下: 它可以 往前 跳恰好 a 个位置(即往右跳)。 它可以 往后 跳恰好 b 个位置(即往左跳)。 它不能 连续 往后跳 2 次。 它不能跳到任何 forbidden 数组中的位置。 跳蚤可以往前跳 超 阅读全文
posted @ 2020-11-15 16:08 _西瓜不甜 阅读(86) 评论(0) 推荐(0) 编辑
摘要:给你一个整数数组 nums 和一个整数 x 。每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值。请注意,需要 修改 数组以供接下来的操作使用。 如果可以将 x 恰好 减到 0 ,返回 最小操作数 ;否则,返回 -1 。 示例 1: 输入:nums = [1, 阅读全文
posted @ 2020-11-15 13:31 _西瓜不甜 阅读(69) 评论(0) 推荐(0) 编辑
摘要:https://stackoverflow.com/questions/21005643/container-is-running-beyond-memory-limits 在mapred-site.xml下添加以下属性 <property> <name>mapreduce.map.memory.m 阅读全文
posted @ 2020-11-15 09:33 _西瓜不甜 阅读(48) 评论(0) 推荐(0) 编辑
摘要:给你两个数组,arr1 和 arr2, arr2 中的元素各不相同 arr2 中的每个元素都出现在 arr1 中 对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。 示例: 输入:arr1 = 阅读全文
posted @ 2020-11-14 09:12 _西瓜不甜 阅读(68) 评论(0) 推荐(0) 编辑