2024.3.20
- 题目来源
- 我的题解
- 方法一 贪心
题目来源
力扣每日一题;题序:1969
我的题解
方法一 贪心
采用贪心,使得最终的序列应该是满足除了二进制位全为1的 2 p − 1 2^p-1 2p−1之外,其余的首尾两两配对进行交换,最终使得半数为1,半数为 2 p − 1 2^{p-1} 2p−1.
时间复杂度:O(n)
空间复杂度:O(1)
public int minNonZeroProduct(int p) {if (p == 1) {return 1;}long mod = 1000000007;long x=fastPow(2,p,mod)-1;long y = (long) 1 << (p - 1);long t=fastPow(x-1,y-1,mod);t=t*x%mod;return (int)t;
}
public long fastPow(long x, long n, long mod) {long res = 1;for (; n != 0; n >>= 1) {if ((n & 1) != 0) {res = res * x % mod;}x = x * x % mod;}return res;
}
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~