题目简介:编写一种算法,若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...
题目简介:字符串轮转。给定两个字符串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相加,那么就能模拟出...
题目简介:有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。
示例 1:
123输入: k = 5输出: 9
思路:利用小根堆来储存数字,并用哈希表进行去重。
每次删除的数字便是第count小的数字,直至找到第k小的数字即可。
tip:
使用long long,防止超出范围
代码如下:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748...
题目简介:给定两个字符串 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。
遍历两个字符串,只要它们的字符及每一个字符的个数是相同...
题目简介:我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数。要求每位数字都要被旋转。
如果一个数的每位数字被旋转以后仍然还是一个数字, 则这个数是有效的。0, 1, 和 8 被旋转后仍然是它们自己;2 和 5 可以互相旋转成对方(在这种情况下,它们以不同的方向旋转,换句话说,2 和 5 互为镜像);6 和 9 同理,除了这些以外其他的数字旋转以后都不再是有效的数字。
现在我们有一个正整数 N, 计算从 1 到 N 中有多少个数 X 是好数?
示例:
12345输入: 10输出: 4解释: 在[1, 10]中有四个好数: ...
题目简介:你有一个炸弹需要拆除,时间紧迫!你的情报员会给你一个长度为 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 ,请你返回...
题目简介:设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。
在链表类中实现这些功能:
get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。
addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。
addAtTail(val):将值为 val 的节点追加到链...
题目简介:给你一个整数数组 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 = [...
题目简介:对于某些非负整数 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...
题目简介:给定一个整数数组 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] 范围内
思路:利用回溯...