07 2022 档案
摘要:位运算 题目详情 给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。 示例1: 输入:n = 2 输出:[0,1,1] 解释: 0 --> 0 1 --> 1 2 --> 10 示例2: 输入:n
阅读全文
摘要:位运算 题目详情 给你一个字符串数组 words ,找出并返回 length(words[i]) * length(words[j]) 的最大值,并且这两个单词不含有公共字母。如果不存在这样的两个单词,返回 0 。 示例1: 输入:words = ["abcw","baz","foo","bar",
阅读全文
摘要:位运算 题目详情 给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。 整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4^x 示例1: 输入:n = 16 输出:true 示例2: 输入:n = 5 输出:false 示例3:
阅读全文
摘要:位运算 题目详情 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例1: 输入: [2,2,1] 输出: 1 示例2: 输入: [4,1,2,1,2] 输出: 4 思路
阅读全文
摘要:位运算 题目详情 颠倒给定的 32 位无符号整数的二进制位。 提示: 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。 在 Java 中,编译器使
阅读全文
摘要:位运算 题目详情 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。 给你两个整数 x 和 y,计算并返回它们之间的汉明距离。 示例1: 输入:x = 1, y = 4 输出:2 解释: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ 上面的箭头指出了对应二进制位不同的
阅读全文
摘要:数学问题 题目详情 给定方法 rand7 可生成 [1,7] 范围内的均匀随机整数,试写一个方法 rand10 生成 [1,10] 范围内的均匀随机整数。 你只能调用 rand7() 且不能调用其他方法。请不要使用系统的 Math.random() 方法。 每个测试用例将有一个内部参数 n,即你实现
阅读全文
摘要:数学问题 题目详情 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为 1,那么这个数就是快乐数。 如果 n 是 快乐数
阅读全文
摘要:数学问题 题目详情 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例1: 输入:nums = [3,2,3] 输出:3 示例2: 输入:nums = [2,2,1,
阅读全文
摘要:数学问题 题目详情 给你一个长度为 n 的整数数组 nums ,返回使所有数组元素相等需要的最少移动数。 在一步操作中,你可以使数组中的一个元素加 1 或者减 1 示例1: 输入:nums = [1,2,3] 输出:2 解释: 只需要两步操作(每步操作指南使一个元素加 1 或减 1): [1,2,3
阅读全文
摘要:数学问题 题目详情 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请不要使用除法,且在 O(n) 时间
阅读全文
摘要:数学问题 题目详情 给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 和 0。 示例1: 输入: a = "11", b = "1" 输出: "100" 示例2: 输入: a = "1010", b = "1011" 输出: "10101" 思路: 这道题是
阅读全文
摘要:数学问题 题目详情 给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。 例如: A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 示例1: 输入:columnNumber = 1 输出:"A" 示例2: 输入:co
阅读全文
摘要:数学问题-随机与取样 题目详情 给你一个单链表,随机选择链表的一个节点,并返回相应的节点值。每个节点 被选中的概率一样 。 实现 Solution 类: Solution(ListNode head) 使用整数数组初始化对象。 int getRandom() 从链表中随机选择一个节点并返回该节点的值
阅读全文
摘要:数学问题-随机与取样 题目详情 给你一个 下标从 0 开始 的正整数数组 w ,其中 w[i] 代表第 i 个下标的权重。 请你实现一个函数 pickIndex ,它可以 随机地 从范围 [0, w.length - 1] 内(含 0 和 w.length - 1)选出并返回一个下标。选取下标 i
阅读全文
摘要:数学问题-随机与取样 题目详情 给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。打乱后,数组的所有排列应该是 等可能 的。 实现 Solution class: Solution(int[] nums) 使用整数数组 nums 初始化对象 int[] reset() 重设数组到它
阅读全文
摘要:数学问题 题目详情 给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。 整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3^x 示例1: 输入:n = 27 输出:true 示例2: 输入:n = 0 输出:false 示例3:
阅读全文
摘要:数学问题 题目详情 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。 你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。 示例1: 输入:num1 = "11", num2 = "123" 输出:
阅读全文
摘要:数学问题 题目详情 给定一个整数 n ,返回 n! 结果中尾随零的数量。 提示 n! = n * (n - 1) * (n - 2) * … * 3 * 2 * 1 示例1: 输入:n = 3 输出:0 解释:3! = 6 ,不含尾随 0 示例2: 输入:n = 5 输出:1 解释:5! = 120
阅读全文
摘要:数学问题 题目详情 给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。 示例1: 输入: num = 100 输出: "202" 示例2: 输入: num = -7 输出: "-10" 思路: 非常简单,反复整除和取余即可得到 注意处理0和负数的情况 我的代码: class Solut
阅读全文
摘要:数学问题 题目详情 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 示例1: 输入:n = 10 输出:4 解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。 示例2: 输入:n = 0 输出:0 示例3: 输入:n = 1 输出:0 思路: 本题利用埃拉托斯特
阅读全文
摘要:lcd lcm 利用辗转相除法,我们可以很方便地求得两个数的最大公因数(greatest common divisor,gcd); 将两个数相乘再除以最大公因数即可得到最小公倍数(least common multiple, lcm) int gcd(int a, int b) { return b
阅读全文
摘要:分治法(递归实现) 题目详情 有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i] * nums[i + 1] 枚硬币。 这里的 i - 1 和 i
阅读全文
摘要:分治法(递归实现) 题目详情 对于某些固定的 N,如果数组 A 是整数 1, 2, ..., N 组成的排列,使得: 对于每个 i < j,都不存在 k 满足i < k < j使得 A[k] * 2 = A[i] + A[j]。 那么数组 A 是漂亮数组。 给定 N,返回任意漂亮数组 A(保证存在一
阅读全文
摘要:分治法(递归实现) 题目详情 给你一个由数字和运算符组成的字符串 expression ,按不同优先级组合数字和运算符,计算并返回所有可能组合的结果。你可以 按任意顺序 返回答案。 生成的测试用例满足其对应输出值符合 32 位整数范围,不同结果的数量不超过 104 。 示例1: 输入:express
阅读全文
摘要:股票类问题(动态规划) 题目详情 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 ;整数 fee 代表了交易股票的手续费用。 你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。 返回获得利润的最大值
阅读全文
摘要:动态规划(dp) 题目详情 给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 '+' 或'-',然后串联起所有整数,可以构造一个 表达式 : 例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-’ ,然后串联起来得到表达式 “+
阅读全文
摘要:动态规划(dp) 题目详情 给出 n 个数对。 在每一个数对中,第一个数字总是比第二个数字小。 现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d)才可以跟在 (a, b) 后面。我们用这种形式来构造一个数对链。 给定一个数对集合,找出能够形成的最长数对链的长度。你不需要用到所有的
阅读全文
摘要:动态规划(dp) 题目详情 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例1: 输入: word1 = "sea", word2 = "eat" 输出: 2 解释: 第一步将 "sea" 变为
阅读全文
摘要:动态规划(dp) 题目详情 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例1: 输入: n = 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1。 示例2: 输入: n = 10 输出: 3
阅读全文
摘要:动态规划(dp) 题目详情 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的
阅读全文
摘要:动态规划(dp) 题目详情 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。 给定一个代表每个房屋存放金额
阅读全文
摘要:股票类问题(动态规划) 题目详情 给定一个整数数组prices,其中第 prices[i] 表示第i天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。 注意:你不能同时参
阅读全文
摘要:股票交易问题(动态规划) 题目详情 给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例1: 输
阅读全文
摘要:股票交易问题(动态规划) 题目详情 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润
阅读全文
摘要:字符串编辑类问题 题目详情 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持'.'和'*'的正则表达式匹配。 '.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素 示例1: 输入:s = "aa", p = "a" 输出:false 解释:"a" 无法匹配 "aa" 整个字符串。
阅读全文