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;
}

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

相关推荐
hgz07102 分钟前
JMeter性能压测执行与Linux环境部署
java·linux·jmeter
考虑考虑8 分钟前
jdk9中的module模块化
java·后端·java ee
ada7_25 分钟前
LeetCode(python)230.二叉搜索树中第k小的元素
python·算法·leetcode·链表
冷yan~27 分钟前
GPT-5.2 深度技术解析:OpenAI 最强模型的架构与性能突破
java·gpt·ai·架构·ai编程
Dwzun1 小时前
基于SpringBoot+Vue的二手书籍交易平台系统【附源码+文档+部署视频+讲解)
java·vue.js·spring boot·后端·spring·计算机毕业设计
TL滕1 小时前
从0开始学算法——第十五天(滑动窗口练习)
笔记·学习·算法
DuHz1 小时前
milliLoc 论文精读:把商用毫米波 FMCW 的绝对测距从“厘米栅格”推进到“毫米级连续值”,并顺带修正 AoA 的系统相位偏差
论文阅读·物联网·算法·信息与通信·毫米波雷达
期待のcode1 小时前
Wrapper体系中的condition参数
java·spring boot·后端·mybatis
qq_401700411 小时前
Linux文件锁解决多进程并发
linux·服务器·算法