2024.3.8力扣每日一题——找出美丽数组的最小和

2024.3.8

题目来源

力扣每日一题;题序:2834

我的题解

方法一 数学

经过分析,在target之前,取小于等于target/2的正整数才能使得和最小,并且满足条件3。
时间复杂度 :O(n)
空间复杂度:O(n)

java 复制代码
public int minimumPossibleSum(int n, int target) {
    if(n==1)
        return 1;
    long res=0;
    int mod=1000000007;
    for(int i=1;i<=target/2&&i<=n;i++){
        res+=i;
    }
    for(int i=target/2;i<n;i++){
        res+=target++;
    }
    return (int)(res%mod);
}
java 复制代码
//优化版本
public int minimumPossibleSum(int n, int target) {
    if(n==1)
        return 1;
    long res=0;
    int mod=1000000007;
    //若target左边取的就已经够n格数了
    if(target/2>=n){
        res+=n*(1L+n)/2;
    }else{
        long t=target/2;
        //target左边可以取的所有正整数的和
        res+=t*(1L+t)/2;
        //左边取了之后,还需要取多少个数
        t=n-t;
        //target本身及其右边可以取的所有正整数的和
        res+=t*(target+target+t-1)/2;
    }
    return (int)(res%mod);
}

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

相关推荐
sinat_286945198 分钟前
opencode
人工智能·算法·chatgpt
fox_mt14 分钟前
AI Coding - ClaudeCode使用指南
java·ai编程
工口发动机24 分钟前
ABC440DEF简要题解
c++·算法
毕设源码-郭学长31 分钟前
【开题答辩全过程】以 基于SSM的高校运动会管理系统的设计与实现为例,包含答辩的问题和答案
java·eclipse
qq_54702617933 分钟前
Maven 使用指南
java·maven
C++ 老炮儿的技术栈37 分钟前
什么是通信规约
开发语言·数据结构·c++·windows·算法·安全·链表
xiaolyuh12342 分钟前
Arthas修改类(如加日志)的实现原理
java
栗子叶1 小时前
Java对象创建的过程
java·开发语言·jvm
零小陈上(shouhou6668889)1 小时前
K-近邻算法 - lazy learning的代表
算法·近邻算法
学历真的很重要1 小时前
LangChain V1.0 Context Engineering(上下文工程)详细指南
人工智能·后端·学习·语言模型·面试·职场和发展·langchain