一个原创题(二)

文章目录

一个原创题

商最大子数组

题目描述

给定一个长度为 n 的整数数组 nums(所有元素均不为 0) ,请找出数组中商最大的非空连续子数组,返回该子数组对应的商。

子数组是数组中一段连续的元素。

子数组的商定义为:从左到右依次进行除法运算。即若子数组为 a1,a2,...,ak(k≥1),则其商为:a1/a2/a3/.../ak

运算顺序严格按照从左到右,不可调换顺序,不可添加括号。

单个元素的商等于该元素本身。

除法运算中除数始终不为 0(输入保证所有元素非零)。

注意:商可能是负数,最大商指代数最大值,例如 (3>0.5>−1 ),自己去总结要保留的小数位。

输入格式

第一行一个整数 n

第二行 n 个整数,表示数组 nums

输出格式

输出一个浮点数,表示最大商的数值。

输入样例

4

-12 -2 -3 4

输出样例

6.0

说明:

-12, -2 = -12 / -2 = 6 就是最大商

其他子数组如 -12, -2, -3 = -2,4 = 4,均小于 6。

输入样例

4

-100 -1 2 3

输出样例

100.0

参考代码如下:

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
typedef long double ld;
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int n;
    cin>>n;
    vector<ld> a(n);
    for (int i=0;i<n;i++) cin>>a[i];
    ld Max=a[0];
    ld Min=a[0];
    ld res=a[0];
    for (int i=1;i<n;i++) {
        ld tempMax=Max;
        ld tempMin=Min;
        Max=max(max(tempMax/a[i],tempMin/a[i]),a[i]);
        Min=min(min(tempMax/a[i],tempMin/a[i]),a[i]);
        res=max(res,Max);
    }
    cout << fixed << setprecision(1) << res << endl;
    return 0;
}

备选样例

样例一

输入样例

6

-5 1 1 1 1 -1

输出样例

5.0

样例二

输入样例

5

-1 -1 -1 -1 -1

输出样例

1.0

样例三

输入样例

3

-1000000000000000000 -1 2

输出样例

1000000000000000000.0

样例四

输入样例

5

-256 -1 -1 -1 -1

输出样例

256.0

样例五

输入样例

6

2 -3 4 -5 6 -7

输出样例

6.0

样例七

输入样例

4

-7 -2 1 3

输出样例

3.5

样例八

输入样例

1

-5

输出样例

-5.0

样例九

输入样例

2

-10 -3

输出样例

3.3

样例十

输入样例

3

-100 1 -2

输出样例

50.0

说明:此题改编自力扣152题乘积最大子数组,其实我再把那个题写了后就想到了这个思路,本学生学识浅薄,希望大佬们多多提出意见!!!

相关推荐
旖旎夜光几秒前
LeetCode 238:除自身以外数组的乘积(前缀和) —— 题解
数据结构·c++·算法·leetcode·前缀和
一条大祥脚7 分钟前
26杭电暑期第八场(后半)快读|快写|tarjan|路径DP|mex转化|扫描线|前缀和|二分图
数据结构·算法·tarjan·杭电多校·强联通分量·动态规划dp
奈斯先生Vector11 分钟前
从“能调用”到“可运营”:AI Agent 进入多模型时代后的架构升级
java·javascript·数据库·人工智能·算法·架构·aigc
Escalating_xu11 分钟前
【C++类和对象(上)】从类的定义、封装与对象模型到内存对齐和 this 指针
开发语言·前端·c++
吃着火锅x唱着歌15 分钟前
Effective C++ 学习笔记 条款45 运用成员函数模板接受所有兼容类型
c++·笔记·学习
2601_9561219722 分钟前
Bellman-ford算法
算法
爱和冰阔落27 分钟前
【Linux】多线程打印为什么会乱?pthread 创建、等待、退出、取消与分离全实战
linux·运维·c++·redis
叠层归一研究院28 分钟前
基于区分本源的此刻存在唯一性本体论推演
人工智能·算法
luj_176829 分钟前
尾椎藏今生记忆?骨盆对应不确定性
开发语言·网络·c++·经验分享·算法