Keshawn_lu's Blog

Keshawn_lu's Blog

Become a better myself.

Leetcode 面试题 01.08. 零矩阵
题目简介:编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。 示例 1: 123456789101112输入:[ [1,1,1], [1,0,1], [1,1,1]]输出:[ [1,0,1], [0,0,0], [1,0,1]] 示例 2: 123456789101112输入:[ [0,1,2,0], [3,4,5,2], [1,3,1,5]]输出:[ [0,0,0,0], [0,4,5,0], [0,3,1,0]] 思路:设置一个标记数组,若本身元素不为0且在遍历过程中被设置为0了,则不需要再去对其进行操作了。 代码如下:1234567891...
Leetcode 面试题 01.09. 字符串轮转
题目简介:字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。 示例1: 12输入:s1 = "waterbottle", s2 = "erbottlewat"输出:True 示例2: 12输入:s1 = "aa", s2 = "aba"输出:False 提示: 字符串长度在[0, 100000]范围内。 思路:方法一:模拟每一个s1的切割点,并组合起来观察是否与s2相等 方法二:先将两个s1相加,那么就能模拟出...
Leetcode 面试题 17.09. 第 k 个数
题目简介:有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。 示例 1: 123输入: k = 5输出: 9 思路:利用小根堆来储存数字,并用哈希表进行去重。 每次删除的数字便是第count小的数字,直至找到第k小的数字即可。 tip: 使用long long,防止超出范围 代码如下:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748...
Leetcode 面试题 01.02. 判定是否互为字符重排
题目简介:给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。 示例 1: 12输入: s1 = "abc", s2 = "bca"输出: true 示例 2: 12输入: s1 = "abc", s2 = "bad"输出: false 说明: 0 <= len(s1) <= 100 0 <= len(s2) <= 100 思路:若两个字符串长度不相等,直接返回false。 遍历两个字符串,只要它们的字符及每一个字符的个数是相同...
Leetcode 788. 旋转数字
题目简介:我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数。要求每位数字都要被旋转。 如果一个数的每位数字被旋转以后仍然还是一个数字, 则这个数是有效的。0, 1, 和 8 被旋转后仍然是它们自己;2 和 5 可以互相旋转成对方(在这种情况下,它们以不同的方向旋转,换句话说,2 和 5 互为镜像);6 和 9 同理,除了这些以外其他的数字旋转以后都不再是有效的数字。 现在我们有一个正整数 N, 计算从 1 到 N 中有多少个数 X 是好数? 示例: 12345输入: 10输出: 4解释: 在[1, 10]中有四个好数: ...
Leetcode 1652. 拆炸弹
题目简介:你有一个炸弹需要拆除,时间紧迫!你的情报员会给你一个长度为 n 的 循环 数组 code 以及一个密钥 k 。 为了获得正确的密码,你需要替换掉每一个数字。所有数字会 同时 被替换。 如果 k > 0 ,将第 i 个数字用 接下来 k 个数字之和替换。 如果 k < 0 ,将第 i 个数字用 之前 k 个数字之和替换。 如果 k == 0 ,将第 i 个数字用 0 替换。 由于 code 是循环的, code[n-1] 下一个元素是 code[0] ,且 code[0] 前一个元素是 code[n-1] 。 给你 循环 数组 code 和整数密钥 k ,请你返回...
Leetcode 707. 设计链表
题目简介:设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。 在链表类中实现这些功能: get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。 addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。 addAtTail(val):将值为 val 的节点追加到链...
Leetcode 1640. 能否连接形成数组
题目简介:给你一个整数数组 arr ,数组中的每个整数 互不相同 。另有一个由整数数组构成的数组 pieces,其中的整数也 互不相同 。请你以 任意顺序 连接 pieces 中的数组以形成 arr 。但是,不允许 对每个数组 pieces[i] 中的整数重新排序。 如果可以连接 pieces 中的数组形成 arr ,返回 true ;否则,返回 false 。 示例 1: 123输入:arr = [15,88], pieces = [[88],[15]]输出:true解释:依次连接 [15] 和 [88] 示例 2: 123输入:arr = [49,18,16], pieces = [...
Leetcode 854. 相似度为 K 的字符串
题目简介:对于某些非负整数 k ,如果交换 s1 中两个字母的位置恰好 k 次,能够使结果字符串等于 s2 ,则认为字符串 s1 和 s2 的 相似度为 k 。 给你两个字母异位词 s1 和 s2 ,返回 s1 和 s2 的相似度 k 的最小值。 示例 1: 12输入:s1 = "ab", s2 = "ba"输出:1 提示: 1 <= s1.length <= 20 s2.length == s1.length s1 和 s2 只包含集合 {'a', 'b', 'c', 'd&#...
Leetcode 698. 划分为k个相等的子集
题目简介:给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。 示例 1: 123输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4输出: True说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3)等于总和。 示例 2: 12输入: nums = [1,2,3,4], k = 3输出: false 提示: 1 <= k <= len(nums) <= 16 0 < nums[i] < 10000 每个元素的频率在 [1,4] 范围内 思路:利用回溯...
avatar
鸣蜩十九
Always
友链
CSDN BiliBili