
算法实战
文章平均质量分 70
喜欢下雨所以爱上雷震子
情感博主一只
展开
-
LeetCode 每日一题 87. 扰乱字符串
87. 扰乱字符串 使用下面描述的算法可以扰乱字符串 s 得到字符串 t : 如果字符串的长度为 1 ,算法停止 如果字符串的长度 > 1 ,执行下述步骤: 在一个随机下标处将字符串分割成两个非空的子字符串。即,如果已知字符串 s ,则可以将其分成两个子字符串 x 和 y ,且满足 s = x + y 。 随机 决定是要「交换两个子字符串」还是要「保持这两个子字符串的顺序不变」。即,在执行这一步骤之后,s 可能是 s = x + y 或者 s = y + x 。 在 x 和 y 这两个子字符串上继原创 2021-04-16 23:40:33 · 201 阅读 · 0 评论 -
LeetCode 每日一题338. 比特位计数
338. 比特位计数 给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: 5 输出: [0,1,1,2,1,2] 进阶: 给出时间复杂度为O(n*sizeof(integer)) 的解答非常容易。但你可以在线性时间 O(n) 内用一趟扫描做到吗? 要求算法的空间复杂度为 O(n)。 你能进一步完善解法吗?要求在C++或任何其他语言中不使用任何内置函数(如原创 2021-03-03 13:29:41 · 148 阅读 · 0 评论 -
LeetCode 每日一题1178. 猜字谜
1178. 猜字谜 外国友人仿照中国字谜设计了一个英文版猜字谜小游戏,请你来猜猜看吧。 字谜的迷面 puzzle 按字符串形式给出,如果一个单词 word 符合下面两个条件,那么它就可以算作谜底: 单词 word 中包含谜面 puzzle 的第一个字母。 单词 word 中的每一个字母都可以在谜面 puzzle 中找到。 例如,如果字谜的谜面是 "abcdefg",那么可以作为谜底的单词有 "faced", "cabbage", 和 "baggage";而 "beefed"(不含字母 "a")以及 "b原创 2021-02-26 13:44:33 · 388 阅读 · 3 评论 -
LeetCode 每日一题995. K 连续位的最小翻转次数
995. K 连续位的最小翻转次数 在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 0。 返回所需的 K 位翻转的最小次数,以便数组没有值为 0 的元素。如果不可能,返回 -1。 示例 1: 输入:A = [0,1,0], K = 1 输出:2 解释:先翻转 A[0],然后翻转 A[2]。 示例 2: 输入:A = [1,1,0], K = 2 输出:-1 解释:无论我们怎样翻转大小为 2 的子数组,原创 2021-02-18 14:08:48 · 145 阅读 · 0 评论 -
LeetCode 每日一题1631. 最小体力消耗路径
1631. 最小体力消耗路径 你准备参加一场远足活动。给你一个二维 rows x columns 的地图 heights ,其中 heights[row][col] 表示格子 (row, col) 的高度。一开始你在最左上角的格子 (0, 0) ,且你希望去最右下角的格子 (rows-1, columns-1) (注意下标从 0 开始编号)。你每次可以往 上,下,左,右 四个方向之一移动,你想要找到耗费 体力 最小的一条路径。 一条路径耗费的 体力值 是路径上相邻格子之间 高度差绝对值 的 最大值 决定的。原创 2021-01-29 17:16:33 · 536 阅读 · 4 评论 -
LeetCode 每日一题959. 由斜杠划分区域
959. 由斜杠划分区域 在由 1 x 1 方格组成的 N x N 网格 grid 中,每个 1 x 1 方块由 /、\ 或空格构成。这些字符会将方块划分为一些共边的区域。 (请注意,反斜杠字符是转义的,因此 \ 用 "\\" 表示。)。 返回区域的数目。 示例 1: 输入: [ " /", "/ " ] 输出:2 解释:2x2 网格如下: 示例 2: 输入: [ " /", " " ] 输出:1 解释:2x2 网格如下: 示例 3: 输入: [ "\\/", "/\\"原创 2021-01-25 13:24:26 · 331 阅读 · 0 评论 -
LeetCode每日一题925:长按键入
你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。 你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。 示例1: 输入:name = “alex”, typed = “aaleex” 输出:true 解释:‘alex’ 中的 ‘a’ 和 ‘e’ 被长按。 示例 2: 输入:name = “saeed”, typed = “ssaaedd” 输出:false 解释:.原创 2020-10-21 21:03:22 · 219 阅读 · 0 评论 -
LeetCode每日一题143:重排链表
给定一个单链表 L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例1: 给定链表 1->2->3->4, 重新排列为 1->4->2->3. 示例 2: 给定链表 1->2->3->4->5, 重新排列为 1->5->2->4->3. /** * 节点类 */ public static.原创 2020-10-21 15:56:10 · 393 阅读 · 0 评论 -
Leetcode第三题:无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。 so原创 2020-10-02 23:06:50 · 203 阅读 · 0 评论 -
12个高矮不同的人,排成两排,逐步推导卡特兰数(Catalan)
12个高矮不同的人,排队问题。引出卡特兰数(Catalan)。等价问题1等价问题2【解法】 传闻是【阿里巴巴笔试题】:12 个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种? 网上看了很多解答,但理解起来仍然费劲。索性自己动手,加强记忆。 本文用2次 “等价证明” 将答案引到卡特兰数。不正之处,欢迎指出。 等价问题1 由6个0和6个1组成一个12位的二进制数,要求从左到右扫描,任意位置,0的累计数都不小于1的累计数,求满足条件的组合有多少种。 【证原创 2020-07-01 23:21:30 · 2335 阅读 · 0 评论 -
Leetcode题:两数相加
LeeCode第二题,难度中等 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输...原创 2019-06-06 22:15:39 · 129 阅读 · 0 评论 -
Leetcode题:两数之和
“ 入坑算法已经有段时间了。写在这里,一是为了加深理解,二是希望帮助到刚接触的小伙伴,共同努力。” 两数之和,LeeCode上第一题,超级经典的算法题。算法题里的“Hello World!”。 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素...原创 2019-06-06 21:41:27 · 461 阅读 · 0 评论