最小好进制
题面
对于给定的整数 \(n\), 如果\(n\)的\(k\) ( \(k\geq 2\))进制数的所有数位全为\(1\),则称 \(k\) ( \(k\geq 2\))是 n 的一个好进制。
以字符串的形式给出 \(n\), 以字符串的形式返回 \(n\) 的最小好进制。
example
输入:"13"
输出:"3"
解释:13 的 \(3\) 进制是 \(111\)。
对于给定的整数 \(n\), 如果\(n\)的\(k\) ( \(k\geq 2\))进制数的所有数位全为\(1\),则称 \(k\) ( \(k\geq 2\))是 n 的一个好进制。
以字符串的形式给出 \(n\), 以字符串的形式返回 \(n\) 的最小好进制。
输入:"13"
输出:"3"
解释:13 的 \(3\) 进制是 \(111\)。
给你一个整数数组 \(cost\) 和一个整数 \(target\) 。请你返回满足如下规则可以得到的 最大 整数:
由于答案可能会很大,请你以字符串形式返回。
如果按照上述要求无法得到任何整数,请你返回 "0" 。
输入:\(cost = [4,3,2,5,6,7,2,5,5]\), \(target = 9\)
输出:"7772"
解释:添加数位 '7' 的成本为 \(2\) ,添加数位 '2' 的成本为 \(3\) 。所以 "7772" 的代价为 \(2\times 3+ 3\times 1 = 9\) 。 "977" 也是满足要求的数字,但 "7772" 是较大的数字。
数字 成本
1 -> 4
2 -> 3
3 -> 2
4 -> 5
5 -> 6
6 -> 7
7 -> 2
8 -> 5
9 -> 5
给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。
输入: \(amount = 5\), \(coins = [1, 2, 5]\)
输出: \(4\)
解释: 有四种方式可以凑成总金额:
集团里有 \(n\) 名员工,他们可以完成各种各样的工作创造利润。
第 \(i\) 种工作会产生 \(profit[i]\) 的利润,它要求 \(group[i]\) 名成员共同参与。如果成员参与了其中一项工作,就不能参与另一项工作。
工作的任何至少产生 \(minProfit\) 利润的子集称为 盈利计划 。并且工作的成员总数最多为 \(n\) 。
有多少种计划可以选择?因为答案很大,所以 返回结果模 \(10^9 + 7\) 的值。
输入:\(n = 5\), \(minProfit = 3\), \(group = [2,2]\), \(profit = [2,3]\)
输出:\(2\)
解释:至少产生 \(3\) 的利润,该集团可以完成工作 \(0\) 和工作 \(1\) ,或仅完成工作 \(1\) 。 总的来说,有两种计划。
有一堆石头,用整数数组 \(stones\) 表示。其中 \(stones[i]\) 表示第 \(i\) 块石头的重量。
每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 \(x\) 和 \(y\),且 \(x \leq y\)。那么粉碎的可能结果如下:
输入:\(stones = [2,7,4,1,8,1]\)
输出:\(1\)
解释:
组合 \(2\) 和 \(4\),得到 \(2\),所以数组转化为 \([2,7,1,8,1]\),
组合 \(7\) 和 \(8\),得到 \(1\),所以数组转化为 \([2,1,1,1]\),
组合 \(2\) 和 \(1\),得到 \(1\),所以数组转化为 \([1,1,1]\),
组合 \(1\) 和 \(1\),得到 \(0\),所以数组转化为 \([1]\),这就是最优值。
给你一个整数数组 \(nums\) 和一个整数 \(target\) 。
向数组中的每个整数前添加 \(+\) 或 \(-\) ,然后串联起所有整数,可以构造一个 表达式 :
返回可以通过上述方法构造的、运算结果等于 \(target\) 的不同 表达式 的数目。
输入:\(nums = [1,1,1,1,1]\), \(target = 3\)
输出:\(5\)
解释:一共有 \(5\) 种方法让最终目标和为 \(3\) 。
给你一个二进制字符串数组 \(strs\) 和两个整数 \(m\) 和 \(n\) 。
请你找出并返回 \(strs\) 的最大子集的大小,该子集中最多有 \(m\) 个 \(0\) 和 \(n\) 个 \(1\) 。
如果 \(x\) 的所有元素也是 \(y\) 的元素,集合 \(x\) 是集合 \(y\) 的子集。
输入:\(strs = [10, 0001, 111001, 1, 0]\), \(m = 5\), \(n = 3\)
输出:\(4\) 解释:最多有 \(5\) 个 \(0\) 和 \(3\) 个 \(1\) 的最大子集是 \(\{10,0001,1,0\}\) ,因此答案是 \(4\) 。
其他满足题意但较小的子集包括 \(\{0001,1\}\) 和 \(\{10,1,0\}\) 。\(\{111001\}\) 不满足题意,因为它含 \(4\) 个 \(1\) ,大于 \(n\) 的值 \(3\) 。
给你两个单链表的头节点 \(headA\) 和 \(headB\) ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 \(null\) 。
图示两个链表在节点 \(c1\) 开始相交:
题目数据 保证 整个链式结构中不存在环。
注意,函数返回结果后,链表必须 保持其原始结构 。
输入:\(intersectVal = 8\), \(listA = [4,1,8,4,5]\), \(listB = [5,0,1,8,4,5]\), \(skipA = 2\), \(skipB = 3\)
输出:Intersected at '8'
解释:相交节点的值为 \(8\) (注意,如果两个链表相交则不能为 \(0\))。
从各自的表头开始算起,链表 \(A\) 为 \([4,1,8,4,5]\),链表 \(B\) 为 \([5,0,1,8,4,5]\)。
在 \(A\) 中,相交节点前有 \(2\) 个节点;在 \(B\) 中,相交节点前有 \(3\) 个节点。
给定一个二进制数组 \(nums\) , 找到含有相同数量的 \(0\) 和 \(1\) 的最长连续子数组,并返回该子数组的长度。
输入: \(nums = [0,1]\)
输出: \(2\)
说明: \([0, 1]\) 是具有相同数量0和1的最长连续子数组。
给你一个整数数组 \(nums\) 和一个整数 \(k\) ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:
如果存在一个整数 \(n\) ,令整数 \(x\) 符合 \(x = n \times k\) ,则称 \(x\) 是 \(k\) 的一个倍数。
输入:\(nums = [23,2,4,6,7]\), \(k = 6\)
输出:\(true\)
解释:\([2,4]\) 是一个大小为 \(2\) 的子数组,并且和为 \(6\) 。