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

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

相关推荐
ValhallaCoder2 小时前
hot100-栈
数据结构·python·算法·
xuzhiqiang07245 小时前
Java进阶之路,Java程序员职业发展规划
java·开发语言
时艰.5 小时前
订单系统历史数据归档方案
java
WW_千谷山4_sch6 小时前
洛谷B3688:[语言月赛202212]旋转排列(新解法:deque双端队列)
数据结构·c++·算法
Zachery Pole6 小时前
【代码随想录】二叉树
算法
漂流瓶jz6 小时前
UVA-11214 守卫棋盘 题解答案代码 算法竞赛入门经典第二版
c++·算法·dfs·aoapc·算法竞赛入门经典·迭代加深搜索·八皇后
浮生09196 小时前
DHUOJ 基础 88 89 90
算法
一只叫煤球的猫7 小时前
ThreadForge v1.1.0 发布:让 Java 并发更接近 Go 的开发体验
java·后端·性能优化
v_for_van7 小时前
力扣刷题记录7(无算法背景,纯C语言)
c语言·算法·leetcode
先做个垃圾出来………7 小时前
3640. 三段式数组 II
数据结构·算法