2024.3.20力扣每日一题——数组元素的最小非零乘积

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)

java 复制代码
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;
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~

相关推荐
Warren985 分钟前
Python自动化测试全栈面试
服务器·网络·数据库·mysql·ubuntu·面试·职场和发展
闲人编程7 分钟前
Python的导入系统:模块查找、加载和缓存机制
java·python·缓存·加载器·codecapsule·查找器
百***060112 分钟前
SpringMVC 请求参数接收
前端·javascript·算法
weixin_4577600013 分钟前
Python 数据结构
数据结构·windows·python
故渊ZY23 分钟前
Java 代理模式:从原理到实战的全方位解析
java·开发语言·架构
匿者 衍25 分钟前
POI读取 excel 嵌入式图片(支持wps 和 office)
java·excel
一个尚在学习的计算机小白34 分钟前
java集合
java·开发语言
IUGEI42 分钟前
synchronized的工作机制是怎样的?深入解析synchronized底层原理
java·开发语言·后端·c#
q***13611 小时前
Windows操作系统部署Tomcat详细讲解
java·windows·tomcat
z***I3941 小时前
Java桌面应用案例
java·开发语言