4的幂
题面
leetcode题目 给定一个整数,写一个函数来判断它是否是 \(4\) 的幂次方。如果是,返回 \(true\) ;否则,返回 \(false\) 。
整数 \(n\) 是 \(4\) 的幂次方需满足:存在整数 \(x\) 使得 \(n == 4^x\)
example
输入:n = 16
输出:true
leetcode题目 给定一个整数,写一个函数来判断它是否是 \(4\) 的幂次方。如果是,返回 \(true\) ;否则,返回 \(false\) 。
整数 \(n\) 是 \(4\) 的幂次方需满足:存在整数 \(x\) 使得 \(n == 4^x\)
输入:n = 16
输出:true
给出矩阵 \(matrix\) 和目标值 \(target\),返回元素总和等于目标值的非空子矩阵的数量。
子矩阵 \(x_1, y_1, x_2, y_2\) 是满足 \(x_1\leq x\leq x_2\) 且 \(y_1\leq y\leq y_2\) 的所有单元 \(matrix[x][y]\) 的集合。
如果 \((x_1, y_1, x_2, y_2)\) 和 \((x_1^{'}, y_1^{'}, x_2^{'}, y_2^{'})\) 两个子矩阵中部分坐标不同(如:\(x_1\neq x_1^{'}\)),那么这两个子矩阵也不同。
输入:\(matrix = [[0,1,0],[1,1,1],[0,1,0]]\), \(target = 0\)
输出:\(4\)
解释:四个只含 \(0\) 的 \(1\times 1\) 子矩阵。
两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。
计算一个数组中,任意两个数之间汉明距离的总和。
输入: 4, 14, 2
输出: 6
解释: 在二进制表示中,4表示为0100,14表示为1110,2表示为0010。(这样表示是为了体现后四位之间关系)
所以答案为:
\[HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6\]
给你一个字符串 \(s\),请你对 \(s\) 的子串进行检测。
每次检测,待检子串都可以表示为 \(queries[i] = [left, right, k]\)。我们可以 重新排列 子串 \(s[left], \cdots, s[right]\),并从中选择 最多 \(k\) 项替换成任何小写英文字母。
如果在上述检测过程中,子串可以变成回文形式的字符串,那么检测结果为 true,否则结果为 false。
返回答案数组 \(answer[]\),其中 \(answer[i]\) 是第 i 个待检子串 \(queries[i]\) 的检测结果。
注意:在替换时,子串中的每个字母都必须作为 独立的 项进行计数,也就是说,如果 \(s[left\cdots right] = aaa\) 且\(k = 2\),我们只能替换其中的两个字母。(另外,任何检测都不会修改原始字符串 \(s\),可以认为每次检测都是独立的)
输入:s = "abcda", queries = [[3,3,0],[1,2,0],[0,3,1],[0,3,2],[0,4,1]]
输出:[true,false,false,true,true]
解释:
queries[0] : 子串 = "d",回文。
queries[1] : 子串 = "bc",不是回文。
queries[2] : 子串 = "abcd",只替换 1 个字符是变不成回文串的。
queries[3] : 子串 = "abcd",可以变成回文的 "abba"。 也可以变成 "baab",先重新排序变成 "bacd",然后把 "cd" 替换为 "ab"。
queries[4] : 子串 = "abcda",可以变成回文的 "abcba"。
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x 和 y,计算它们之间的汉明距离。 注意: \(0 \leq x, y\eq 2^31\)
输入: x = 1, y = 4
输出: 2
上面的箭头指出了对应二进制位不同的位置。
给出一个字符串 s(仅含有小写英文字母和括号)。
请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。
注意,您的结果中 不应 包含任何括号。
输入:s = "(abcd)" 输出:"dcba"
输入:s = "(u(love)i)" 输出:"iloveu"
输入:s = "(ed(et(oc))el)" 输出:"leetcode"
有台奇怪的打印机有以下两个特殊要求:
打印机每次只能打印由 同一个字符 组成的序列。
每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符。
给你一个字符串 s ,你的任务是计算这个打印机打印它需要的最少打印次数。
输入:s = "aaabbb"
输出:2
解释:首先打印 "aaa" 然后打印 "bbb"。
黑板上写着一个非负整数数组 nums[i] 。Alice 和 Bob 轮流从黑板上擦掉一个数字,Alice 先手。如果擦除一个数字后,剩余的所有数字按位异或运算得出的结果等于 0 的话,当前玩家游戏失败。 (另外,如果只剩一个数字,按位异或运算得到它本身;如果无数字剩余,按位异或运算结果为 0。)
并且,轮到某个玩家时,如果当前黑板上所有数字按位异或运算结果等于 0,这个玩家获胜。
假设两个玩家每步都使用最优解,当且仅当 Alice 获胜时返回 true。
输入:nums = [1, 1, 2] 输出:false
请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。
举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。
如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。
如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。
输入:root1 = [3,5,1,6,2,9,8,null,null,7,4], root2 = [3,5,1,6,7,4,2,null,null,null,null,null,null,9,8]
输出:true
给你一个整数数组 bloomDay,以及两个整数 m 和 k 。
现需要制作 m 束花。制作花束时,需要使用花园中 相邻的 k 朵花 。
花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好 可以用于 一束 花中。
请你返回从花园中摘 m 束花需要等待的最少的天数。如果不能摘到 m 束花则返回 -1 。
输入:bloomDay = [1,10,3,10,2], m = 3, k = 1
输出:3
解释:让我们一起观察这三天的花开过程,x 表示花开,而 _ 表示花还未开。
现在需要制作 3 束花,每束只需要 1 朵。
1 天后:[x, _, _, _, _] // 只能制作 1 束花
2 天后:[x, _, _, _, x] // 只能制作 2 束花
3 天后:[x, _, x, _, x] // 可以制作 3 束花,答案为 3