LeetCode1015.可被K整除的最小整数
1015.可被K整除的最小整数题目描述:给定正整数 k ,你需要找出可以被 k 整除的、仅包含数字 1 的最 小 正整数 n 的长度。 返回 n 的长度。如果不存在这样的 n ,就返回-1。 注意: n 可能不符合 64 位带符号整数。 示例 1: 输入: k = 1 输出: 1 解释: 最小的答案是 n = 1,其长度为 1。 示例 2: 输入: k = 2输出: -1解释: 不存在可被 2 整除的正整数 n 。 示例 3: 输入: k = 3输出: 3解释: 最小的答案是 n = 111,其长度为 3。 提示: 1 <= k <= 10^5 思路: 循环遍历乘10取余k,为了避免溢出对k取余,对k取余不会影响结果 代码:123456789101112class Solution { public int smallestRepunitDivByK(int k) { int res = 0; for (int i = 1; i < 100000; ...
LeetCode1018.可被5整除的二进制
1018.可被5整除的二进制题目描述:给定一个二进制数组 nums ( 索引从0开始 )。 我们将xi 定义为其二进制表示形式为子数组 nums[0..i] (从最高有效位到最低有效位)。 例如,如果 nums =[1,0,1] ,那么 x0 = 1, x1 = 2, 和 x2 = 5。返回布尔值列表 answer,只有当 xi 可以被 5 整除时,答案 answer[i] 为 true,否则为 false。 示例 1: 输入: nums = [0,1,1] 输出: [true,false,false] 解释: 输入数字为 0, 01, 011;也就是十进制中的 0, 1, 3 。只有第一个数可以被 5 整除,因此 answer[0] 为 true 。 示例 2: 输入: nums = [1,1,1]输出: [false,false,false] 提示: 1 <= nums.length <= 105 nums[i] 仅为 0 或 1 思路: 循环遍历左移一位取余5,为了避免溢出对5取余 代码:1234567891011class Solu...
LeetCode1262.可被三整除的最大和
1262.可被三整除的最大和题目描述:给你一个整数数组 nums,请你找出并返回能被三整除的元素 最大和。 示例 1: 输入: nums = [3,6,5,1,8] 输出: 18 解释: 选出数字 3, 6, 1 和 8,它们的和是 18(可被 3 整除的最大和)。 示例 2: 输入: nums = [4]输出: 0解释: 4 不能被 3 整除,所以无法选出数字,返回 0。 示例 3: 输入: nums = [1,2,3,4,4]输出: 12解释: 选出数字 1, 3, 4 以及 4,它们的和是 12(可被 3 整除的最大和)。 提示: 1 <= nums.length <= 4 * 104 1 <= nums[i] <= 10^4 思路: 虽然A过了,但是我写的贪心太丑陋了,放下灵神的代码吧 代码:123456789101112131415161718192021222324252627282930class Solution { public int maxSumDivThree(int[] nu...
LeetCode65.有效数字
65.有效数字题目描述:给定一个字符串 s ,返回 s 是否是一个 有效数字。 例如,下面的都是有效数字:2, 0089, -0.1, +3.14, 4., -.9, 2e10, -90E3, 3e+7, +6e-1, 53.5e93, -123.456e789,而接下来的不是:abc, 1a, 1e, e3, 99e2.5, --6, -+3, 95a54e53。 一般的,一个 有效数字 可以用以下的规则之一定义: 一个 整数 后面跟着一个 可选指数。 一个 十进制数 后面跟着一个 可选指数。 一个 整数 定义为一个 可选符号 - 或 + 后面跟着 数字。一个 十进制数 定义为一个 可选符号 - 或 + 后面跟着下述规则: 数字 后跟着一个 小数点 .。 数字 后跟着一个 小数点 . 再跟着 数位。 一个 小数点 . 后跟着 数位。指数 定义为指数符号 e 或 E,后面跟着一个 整数。 数字 定义为一个或多个数位。 示例 1: 输入: s = “0” 输出: true 示例 2: 输入: s = “e”输出: false 示例 3: 输入: s...
LeetCode32.最长有效括号
LeetCode32.最长有效括号题目描述:给你一个只包含 ( 和 ) 的字符串,找出最长有效(格式正确且连续)括号 子串 的长度。 左右括号匹配,即每个左括号都有对应的右括号将其闭合的字符串是格式正确的,比如 (()())。 示例 1: 输入: s = “(()” 输出: 2 解释: 最长有效括号子串是 “()” 示例 2: 输入: s = “)()())”输出: 4解释:最长有效括号子串是 “()()” 示例 3: 输入: s = “”输出: 0 提示: 0 <= s.length <= 3 * 104 s[i] 为 ( 或 ) 思路: 栈存下标,每次入栈取栈顶元素看当前待入栈元素是否为),且栈顶元素为(,若满足条件则先弹出元素,然后取ans = Math.max(i-stack(top),ans)需要注意下边界条件,即栈为空边界 代码:1234567891011121314151617181920class Solution { public int longestValidParentheses(Stri...
LeetCode3190.使所有元素都可以被3整除的最少操作数
3190.使所有元素都可以被3整除的最少操作数题目描述:给你一个整数数组 nums 。一次操作中,你可以将 nums 中的 任意 一个元素增加或者减少 1 。 请你返回将 nums 中所有元素都可以被 3 整除的 最少 操作次数。 示例 1: 输入: nums = [1,2,3,4] 输出: 3 解释: 通过以下 3 个操作,数组中的所有元素都可以被 3 整除: 将 1 减少 1 。 将 2 增加 1 。 将 4 减少 1 。 示例 2: 输入: nums = [3,6,9]输出: 0 提示: 1 <= nums.length <= 50 1 <= nums[i] <= 50 思路: 暴力破解就好,循环代替思考 代码:123456789class Solution { public int minimumOperations(int[] nums) { return Arrays.stream(nums) .map(num -> { ...
LeetCode1930.长度为3的不同回文子序列
1930.长度为3的不同回文子序列题目描述:给你一个字符串 s ,返回 s 中 长度为 3 的不同回文子序列 的个数。 即便存在多种方法来构建相同的子序列,但相同的子序列只计数一次。 回文 是正着读和反着读一样的字符串。 子序列 是由原字符串删除其中部分字符(也可以不删除)且不改变剩余字符之间相对顺序形成的一个新字符串。 例如,"ace" 是 "abcde" 的一个子序列。 示例 1: 输入: s = “aabca” 输出: 3 解释: 长度为 3 的 3 个回文子序列分别是: “aba” (“aabca” 的子序列) “aaa” (“aabca” 的子序列) “aca” (“aabca” 的子序列) 示例 2: 输入: s = “adc”输出: 0解释:“adc” 不存在长度为 3 的回文子序列。 示例 3: 输入: s = “bbcbaba”输出: 4解释: 长度为 3 的 4 个回文子序列分别是: “bbb” (“bbcbaba” 的子序列) “bcb” (“bbcbaba” 的子序列) “...
LeetCode757.设置交集大小至少为2
757.设置交集大小至少为2题目描述:给你一个二维整数数组 intervals ,其中 intervals[i] = [starti, endi] 表示从 starti 到 endi 的所有整数,包括 starti 和 endi 。 包含集合 是一个名为 nums 的数组,并满足 intervals 中的每个区间都 至少 有 两个 整数在 nums 中。 例如,如果 intervals = [[1,3], [3,7], [8,9]] ,那么 [1,2,4,7,8,9] 和 [2,3,4,8,9] 都符合 包含集合 的定义。 返回包含集合可能的最小大小。 示例 1: 输入: intervals = [[1,3],[3,7],[8,9]] 输出: 5 解释: nums = [2, 3, 4, 8, 9].可以证明不存在元素数量为 4 的包含集合。 示例 2: 输入: intervals = [[1,3],[1,4],[2,5],[3,5]]输出: 3解释: nums = [2, 3, 4].可以证明不存在元素数量为 2 的包含集合。 ...
LeetCode2154. 将找到的值乘以2
2154. 将找到的值乘以2题目描述: 给你一个整数数组 nums ,另给你一个整数 original ,这是需要在 nums 中搜索的第一个数字。 接下来,你需要按下述步骤操作: 如果在 nums 中找到 original ,将 original 乘以 2 ,得到新 original(即,令 original = 2 * original)。否则,停止这一过程。 只要能在数组中找到新 original ,就对新 original 继续 重复 这一过程。 返回 original 的 最终 值。 示例 1: 输入: nums = [5,3,6,1,12], original = 3 输出: 24 解释: 3 能在 nums 中找到。3 * 2 = 6 。 6 能在 nums 中找到。6 * 2 = 12 。 12 能在 nums 中找到。12 * 2 = 24 。 24 不能在 nums 中找到。因此,返回 24 。 示例 2: 输入: nums = [2,7,9], original = 4 输...
LeetCode717. 1 比特与 2 比特字符
717. 1 比特与 2 比特字符题目描述:有两种特殊字符: 第一种字符可以用一比特 0 表示 第二种字符可以用两比特(10 或 11)表示给你一个以 0 结尾的二进制数组 bits ,如果最后一个字符必须是一个一比特字符,则返回 true 。 示例 1: 输入: bits = [1, 0, 0] 输出: true 解释: 唯一的解码方式是将其解析为一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。 示例 2: 输入: bits = [1,1,1,0]输出: false解释: 唯一的解码方式是将其解析为两比特字符和两比特字符。所以最后一个字符不是一比特字符。 提示: 1 <= bits.length <= 1000 bits[i] 为 0 或 1 思路: 思维题,倒序判断最后一段1奇偶性,最后一个0被占用了,一旦构成01就是不合法的最后一段1为奇数则一定不合法最后一段1为偶数则一定合法这个可以枚举验证一下 代码:1234567891011121314class Solution { public boolea...
