随笔分类 - LeetCode
摘要:参考 优先队列的思路解决接雨水II,逐行解释 从最外圈开始不断向内遍历,如果内部的高度小于外部的高度,则证明该位置可以蓄水,否则不能,水会顺着该外圈流出去。 每次都处理外圈高度最小的那个位置 a,遍历它的四周。 如果它旁边的某个位置 b 高度小于 a,则证明 b 可以蓄水,因为 a 已经是四周最小的
阅读全文
摘要:扫描线+优先队列 https://leetcode-cn.com/problems/the-skyline-problem/solution/tian-ji-xian-wen-ti-by-leetcode-solution-ozse/ 先把所有横坐标排序,然后把建筑按横坐标排序。设定每个建筑都包含左
阅读全文
摘要:之前写了篇文章 用JavaScript刷LeetCode的正确姿势,简单总结一些用 JavaScript 刷力扣的基本调试技巧。最近又刷了点题,总结了些数据结构和算法,希望能对各为 JSer 刷题提供帮助。 此篇文章主要想给大家一些开箱即用的 JavaScipt 版本的代码模板,涉及到较复杂的知识点
阅读全文
摘要:题目描述 给你一个由正整数组成的数组 nums 。 数字序列的 最大公约数 定义为序列中所有整数的共有约数中的最大整数。 例如,序列 [4,6,16] 的最大公约数是 2 。 数组的一个 子序列 本质是一个序列,可以通过删除数组中的某些元素(或者不删除)得到。 例如,[2,5,10] 是 [1,2,
阅读全文
摘要:给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。 如果不存在满足条件的子数组,则返回 0 。 示例 1: 输入:nums = [8,2,4,7], limit = 4 输出:2 解释:所
阅读全文
摘要:根据寒神题解 https://leetcode.com/problems/minimum-cost-to-merge-stones/discuss/247567/JavaC%2B%2BPython-DP 题意: 每次可以把连续 K 堆石头合成一堆,花费是 K 堆之和,问最小花费多少可以把全部石头合成
阅读全文
摘要:题意 给一个字符串S,求它所有子序列中不同非空回文串的数量。字符串由 'a' 'b' 'c' 'd' 四个字母组成。 由于题目要求的是不同回文串。 abba 的回文串子序列为 a,b,aba,abba 其中 aba 只能算一次。 最近做 区间DP 的题,习惯起手写 for (int l = 0; l
阅读全文
摘要:题意: 给一个数字n 求离n最近(且不等)的回文串 存在多个答案返回最小的 首先很容易想到 将数字分为两段,如 12345 -> 123/45,然后将后半段根据前面的进行镜像重置 123/45 -> 12321 那,如果数字刚好是回文串,就把前半段-1就好了 但是存在以下例外,就是当前半段 +1 或
阅读全文
摘要:好题… 就是比平时的 hard 难了一些…… 虽然猜出是数位DP了…不过比我之前做的题,好像多了一维,印象中都是一维记录之前状态就够了……然后就没做出…… 至于 KMP 的应用更是神奇,虽然掌握的 kmp 但是真的想不到…… 窝的代码能力太差了……总归是学到了……希望下次能做出来吧…… 参考题解 h
阅读全文
摘要:给你一个披萨,它由 3n 块不同大小的部分组成,现在你和你的朋友们需要按照如下规则来分披萨: 你挑选 任意 一块披萨。Alice 将会挑选你所选择的披萨逆时针方向的下一块披萨。Bob 将会挑选你所选择的披萨顺时针方向的下一块披萨。重复上述过程直到没有披萨剩下。每一块披萨的大小按顺时针方向由循环数组
阅读全文
摘要:最初在一个记事本上只有一个字符 'A'。你每次可以对这个记事本进行两种操作: Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的)。 Paste (粘贴) : 你可以粘贴你上一次复制的字符。 给定一个数字 n 。你需要使用最少的操作次数,在记事本中打印出恰好
阅读全文
摘要:题目: 有台奇怪的打印机有以下两个特殊要求: 打印机每次只能打印同一个字符序列。每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符。给定一个只包含小写英文字母的字符串,你的任务是计算这个打印机打印它需要的最少次数。 示例 1: 输入: "aaabbb"输出: 2解释: 首先打印 "a
阅读全文
摘要:给你一个 m * n 的矩阵 seats 表示教室中的座位分布。如果座位是坏的(不可用),就用 '#' 表示;否则,用 '.' 表示。 学生可以看到左侧、右侧、左上、右上这四个方向上紧邻他的学生的答卷,但是看不到直接坐在他前面或者后面的学生的答卷。请你计算并返回该考场可以容纳的一起参加考试且无法作弊
阅读全文
摘要:题意: 给一个字符串 寻找字符串为(a+a)格式的子串有多少。a+a 格式字符串比如 abcabc, ee 等。 首先O(N^2)枚举子串,然后通过哈希在O(1)复杂度判断子串是否符合要求。 RK哈希,Rabin_Karp 哈希,通过比较hash值是否相等来比较每个字符串是否相等。有概率出错(很小)
阅读全文
摘要:挺有趣的一道题,看题解才勉强做出。。。 题意就是给n个长度,然后以上左下右的顺序走。比如 [2,1,1,2]就是先上走2 左走1 下走1 右走2 如果还有就继续向上,向左…… 求路径中是否存在交叉。 如果在纸上画一画,就会发现,在保证不出现交叉的前提下,可画的类型无非几种 (实不相瞒,我用微信截图随
阅读全文
摘要:题意 给N个单词表示N个点,和N-1个单词对,表示可以走的路径,求字典序最小的总路径。 首先说下这么暴力DFS能过。暴力的我都不敢写= = class Solution { public: vector<string> findItinerary(vector<vector<string> >& t
阅读全文
摘要:给定一个整数数组 nums,返回区间和在 [lower, upper] 之间的个数,包含 lower 和 upper。区间和 S(i, j) 表示在 nums 中,位置从 i 到 j 的元素之和,包含 i 和 j (i ≤ j)。 思路: 首先用 sum(i) 表示 nums[0]~nums[i]
阅读全文
摘要:给一个矩阵mat,每个格子都是0或1,翻转一个格子会将该格子以及相邻的格子(有共同边)全部翻转(0变为1,1变为0) 求问最少需要翻转几次将所有格子全部置为0。 这题的重点是数据范围,比赛结束看了眼数据范围想把自己锤死= = m == mat.length n == mat[0].length 1
阅读全文
摘要:Given an array of integers, find out whether there are two distinct indices i and j in the array such that the absolute difference between nums[i] and
阅读全文
摘要:虽然很多人都觉得前端算法弱,但其实 JavaScript 也可以刷题啊!最近两个月断断续续刷完了 leetcode 前 200 的 middle + hard ,总结了一些刷题常用的模板代码。走过路过发现 bug 请指出,拯救一个辣鸡(但很帅)的少年就靠您啦! 常用函数 包括打印函数和一些数学函数。
阅读全文