爨爨爨好

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  Leetcode

摘要:▶ 给定方阵 grid,其元素的值为 D0n-1,代表网格中该点处的高度。现在网格中开始积水,时刻 t 的时候所有值不大于 t 的格点被水淹没,当两个相邻格点(上下左右四个方向)的值都不超过 t 的时候我们称他们连通,即可以通过游泳到达,请问能将主对角两顶点((0, 0) 和 (n-1, n-1)) 阅读全文
posted @ 2018-02-05 22:54 爨爨爨好 阅读(630) 评论(0) 推荐(0)

摘要:▶ 给出四个整数,求他们是否能加减乘除括号拼凑成 24 ● 代码,11 ms,正向枚举,推广性很强(nums 可以改为任意长度,也不限于拼凑 24 这个和),缺点是只能判定是否有解,不方便输出不重复的解 ● 分情况讨论,3 ms,代码非常暴力,仅适用于4元情况,不过可以通过添加新的函数 valid( 阅读全文
posted @ 2018-02-04 22:48 爨爨爨好 阅读(433) 评论(0) 推荐(0)

摘要:▶ 指数取模运算 ab % m ▶ 参考维基 https://en.wikipedia.org/wiki/Modular_exponentiation,给了几种计算方法:暴力计算法,保存中间结果法(分为左到右的二进制法和右到左的二进制法),矩阵法,优先群法,量子计算法。 ● 代码,18 ms,令 a 阅读全文
posted @ 2018-02-04 11:39 爨爨爨好 阅读(197) 评论(0) 推荐(0)

摘要:▶ 有关将一棵二叉树转化为二位表的题目,一模一样的套路出了四道题 ▶ 第 102 题,简单的转化,[ 3, 9, 20, null, null, 15, 7 ] 转为 [ [ 15, 7 ] , [ 9, 20 ] , [ 3 ] ] ● 自己的代码,6 ms,先根序遍历,最快的解法算法与之相同 ▶ 阅读全文
posted @ 2018-02-03 23:19 爨爨爨好 阅读(189) 评论(0) 推荐(0)

摘要:▶ 将一个单链表拆分为长度尽量接近的 k 段 ● 自己的代码,12 ms ■ 记链表长度为 count,目标段数为 k,quo = count / k,mod = count % k,part = mod * (quo + 1) ■ 前半截(长半截)共有 mod 组,每组 quo + 1 个元素,共 阅读全文
posted @ 2018-02-03 22:59 爨爨爨好 阅读(160) 评论(0) 推荐(0)

摘要:▶ 扫雷的扩展判定。已知棋盘上所有点的情况(雷区 'M',已翻开空白区 'B',未翻开空白区 'E',数字区 '1' ~ '8'),现在给定一个点击位置(一定在空白区域),若命中雷区则将被命中的 M 改为 X,若命中空白区则将点击位置扩展为带有数字边界的安全区。 ● 自己的解法,28 ms,深度优先 阅读全文
posted @ 2018-02-03 22:54 爨爨爨好 阅读(202) 评论(0) 推荐(0)

摘要:▶ 给定一个数组与它的一个子列,对于数组中的一个元素,定义它右边第一个比他大的元素称为他的后继,求所给子列的后继构成的数组 ▶ 第 496 题,规定数组最后一个元素即数组最大元素的后继均为 -1 ● 自己的版本,12 ms,最快的解法算法与之相同 ▶ 第 503 题,数组换成环状,只有数组最大元素的 阅读全文
posted @ 2018-02-03 22:47 爨爨爨好 阅读(149) 评论(0) 推荐(0)

摘要:▶ 指数模运算。求 c 使得 c ≡ ab (mod m),其中 b 用 vector<int> 的形式保存(长整数),m = 1337 ● 代码,18 ms,令 b=10c+d,则 ab % m == ((ac % m)10 % m) * (ad % m) % m,递归,每次将指数的个位拆出来 ● 阅读全文
posted @ 2018-02-02 14:49 爨爨爨好 阅读(227) 评论(0) 推荐(0)

摘要:▶ 两个四则表达式运算的题目,第 770 题 Basic Calculator IV 带符号计算不会做 Orz,第 772 题 Basic Calculator III 要收费 Orz。 ▶ 自己的全能版代码,28 ms,采用表达式中缀转后缀,然后利用栈来计算。支持加减乘除幂模,一模一样的代码刷掉了 阅读全文
posted @ 2018-02-02 11:48 爨爨爨好 阅读(374) 评论(0) 推荐(0)

摘要:▶ 三个与丑数相关的问题 ▶ 第 263题,判定一个数字是否是丑数,即其素因子是否仅由 2,3,5 构成。 ● 常规消除判别,4 ms ● 递归方法,6 ms ▶ 第 264 题,计算第 n 个丑数。第 263 题就是个坑,不能用逐个判断的方法来找,否则超时 ● 用第 263 题的方法逐个检查,计算 阅读全文
posted @ 2018-02-01 16:51 爨爨爨好 阅读(257) 评论(0) 推荐(0)

摘要:▶ 整数数组中有一个数出现的频数超过了数组长度的一半,求这个数 ● 自己的代码,27 ms,使用散列表,最快的解法算法与之相同,但是用的数据结构是 map ● 大佬的解法,16 ms,摩尔投票算法(Boyer-Moore Voting Algorithm),时间复杂度 O(n) 空间复杂度 O(1) 阅读全文
posted @ 2018-01-31 23:25 爨爨爨好 阅读(159) 评论(0) 推荐(0)

摘要:▶ 栈和队列的相互表示。发现内置的队列和栈结构都十分高效,相互表示后性能损失都很小。 ▶ 第 225 题,用队列实现栈 ● 自己的代码,3 ms,单队列实现,入栈 O(1),读取栈顶元素 O(n),出栈 O(n) 。 ● 大佬的代码,3 ms,队列 queue 具有成员函数 back(),可以用于读 阅读全文
posted @ 2018-01-31 22:50 爨爨爨好 阅读(183) 评论(0) 推荐(0)

摘要:▶ 一个学生的考勤状况是一个字符串,其中各字符的含义是:A 缺勤,L 迟到,P 正常。如果一个学生考勤状况中 A 不超过一个,且没有连续两个 L(L 可以有多个,但是不能连续),则称该学生达标(原文表述:A student could be rewarded if his attendance re 阅读全文
posted @ 2018-01-30 22:27 爨爨爨好 阅读(290) 评论(0) 推荐(0)

摘要:▶ n 对夫妻共 2n 个人随机坐成一排,“交换其中某两人的位置” 称为一次操作,求最少的操作此次数,使 n 对夫妻两人都相邻。初始座位为非负整数列 D1n-1,其中值为 2k 和 2k+1 的两个元素为一对夫妻。(本体尚未有 Discuss或 Solution) ● 代码,2 ms,顺着梳理 ● 阅读全文
posted @ 2018-01-30 20:13 爨爨爨好 阅读(486) 评论(0) 推荐(0)

摘要:▶ 将一群人的关系网络划分为几个连通子图,且子图之间两两不连通,求这种连通子图的数量 ● 代码,22 ms,深度优先遍历 ● 代码,21 ms,建立森林,并且定义了专用于这类合并问题的类 UnionFind,本问题中可以完全去掉节点等级变量 rank ● 广度优先遍历,24 ms ● 收录两个 py 阅读全文
posted @ 2018-01-30 19:50 爨爨爨好 阅读(195) 评论(0) 推荐(0)

摘要:▶ 要求给出一种对 URL 网址进行压缩和解压的算法,例如 https://leetcode.com/problems/design-tinyurl ←→ http://tinyurl.com/4e9iAk,在不允许打表的情况下应该无法压缩的。 ● 代码,6 ms,完全不压缩,just for fu 阅读全文
posted @ 2018-01-30 17:30 爨爨爨好 阅读(175) 评论(0) 推荐(0)

摘要:▶ 将一个单词 W1 以字母为最小单位拆成一棵二叉树,旋转其中的某几个结点的左右子树,再拼装回去得到单词 W2,我们称 W1 与 W2 等价。现在给出两个单词,判定他们是否等价。 ● 代码,4 ms,递归,最快的解法算法与之相同。有方法利用 unordered_map 缓存了各子串的判定结果,但由于 阅读全文
posted @ 2018-01-30 15:21 爨爨爨好 阅读(197) 评论(0) 推荐(0)

摘要:▶ 求一个整数数列的和最大子串 ● 代码,12 ms,动态规划,时间复杂度 O(n),最快的解法算法与之相同。记 f( i ) 为 “数组 num 中以第 i 位作为结尾的子串的最大和”,那么有 f(i) = nums[i] + (f(i - 1) > 0 ? f(i - 1) : 0); ● 代码 阅读全文
posted @ 2018-01-30 12:18 爨爨爨好 阅读(166) 评论(0) 推荐(0)

摘要:▶ 有两个单链表,从中间某个节点开始结点完全相同,找出该节点。 ● 神奇的双指针法,34 ms,,详细步骤见代码注释(设两个单链表结点个数分别为 m 和 n,公共部分长为 k),时间复杂度 O(n),空间复杂度 O(1) ● 双指针法高压版,36 ms ● 代码,55 ms,便于理解的一个双指针法, 阅读全文
posted @ 2018-01-30 11:30 爨爨爨好 阅读(165) 评论(0) 推荐(0)

摘要:▶ 给定长为 n 的整数列,其元素是从 D0n 中取的,且两两不等,求没有被取到的元素。 ● 异或骚操作,24 ms,利用了性质 i ^ i = 0,当某个 k 仅出现了一次时 k 可以留下来。 ● 其他还有排序后查找的,排序后逐位作差找跨度的等。 阅读全文
posted @ 2018-01-29 23:47 爨爨爨好 阅读(185) 评论(0) 推荐(0)