2708. 一个小组的最大实力值

简介: 【9月更文挑战第2天】

给你一个下标从 0 开始的整数数组 nums ,它表示一个班级中所有学生在一次考试中的成绩。老师想选出一部分同学组成一个 非空 小组,且这个小组的 实力值 最大,如果这个小组里的学生下标为 i0, i1, i2, ... , ik ,那么这个小组的实力值定义为 nums[i0] nums[i1] nums[i2] ... nums[ik​] 。

请你返回老师创建的小组能得到的最大实力值为多少

示例 1:

输入:nums = [3,-1,-5,2,5,-9]
输出:1350
解释:一种构成最大实力值小组的方案是选择下标为 [0,2,3,4,5] 的学生。实力值为 3 (-5) 2 5 (-9) = 1350 ,这是可以得到的最大实力值。
示例 2:

输入:nums = [-4,-5,-4]
输出:20
解释:选择下标为 [0, 1] 的学生。得到的实力值为 20 。我们没法得到更大的实力值。

提示:

1 <= nums.length <= 13
-9 <= nums[i] <= 9
题解:
直接暴力跑一遍把所有非零数相乘即可判断正负,就是有些地方需要注意:

  1. 如果数组中只有一个数。不管正负都需要范围他,因为题目中说了非空。
  2. 如果全零,也要返回零。
  3. 如果是有一个负数,其余全是零,那么就应该返回0。选零要比选负数大。
  4. 如果积为负数,那么一定要除最小的负数。
class Solution {
public:
    long long maxStrength(vector<int>& nums) {
        long long ans = 1;
        sort(nums.begin(),nums.end());
        int tmp=1;
        for(int i = 0;i<nums.size();i++){
            if(nums[i]>0){
                ans=ans*nums[i];                
            }else if(nums[i]<0){
                ans=ans*nums[i];
                tmp=nums[i];   
            }
        }
        if (nums.size()==1) return nums[0];
        if(nums[0]==0&&nums[nums.size()-1]==0) return 0;
        if(nums[0]<0){
            if(nums.size()>=2){
                if(nums[1]==0&&nums[nums.size()-1]==0) return 0;
            }
            else return nums[0];
        }
        if (ans<0){
            ans=ans/tmp;            
        }
        return ans;
    }
};
目录
相关文章
|
数据采集 安全
主动扫描和被动扫描
在扫描器中输入目标域名或者URL用爬虫模块爬取所有链接,对GET、POST等请求进行参数变形和污染,进行重放测试,然后依据返回信息中的状态码、数据大小、数据内容关键字等去判断该请求是否含有相应的漏洞。
1096 0
主动扫描和被动扫描
|
5月前
|
传感器 自然语言处理 前端开发
体验通义灵码 2.5 版编程智能体
在当今快速发展的技术环境中,软件开发正经历着前所未有的变革。传统的编程方式往往需要开发者具备深厚的技术背景和丰富的实践经验,但随着人工智能技术的进步,这种局面正在被打破。通义灵码 2.5 版作为阿里云推出的一款先进的编程智能体,凭借其强大的自主决策、环境感知和工具使用能力,为开发者提供了一种全新的编程体验,使得从零开始构建应用程序变得更加简单高效。
|
机器学习/深度学习 自然语言处理 安全
LLM 系列 | 17:如何用LangChain做长文档问答?
本文作为LangChain专题的开篇,以长文档问答为例介绍如何使用LangChain。
LLM 系列 | 17:如何用LangChain做长文档问答?
|
10月前
|
机器学习/深度学习 人工智能 算法框架/工具
什么是CANN和Ascend C
CANN(Compute Architecture for Neural Networks)是华为推出的AI异构计算架构,支持多种AI框架如MindSpore、PyTorch等,适用于AI处理器与编程,旨在提升昇腾AI处理器的计算效率。CANN提供强大的图引擎、算子开发语言Ascend C、算子加速库AOL、集合通信库HCCL、毕昇编译器及Runtime运行时,支持快速构建AI应用,涵盖推理应用开发、模型训练和算子开发等关键功能。
|
11月前
|
存储 缓存 算法
RAID 的镜像是一种冗余技术
镜像是冗余技术的一种,通过在不同磁盘上创建数据的完整副本,提供数据保护。这种方法无需额外计算和校验,故障恢复迅速,支持并发读取,提高读I/O性能,但写入性能受影响。镜像技术虽提供高数据安全性,却需双倍存储空间,成本较高,适用于关键数据保护。此外,镜像可通过“拆分”实现几乎零备份窗口的数据备份。
222 4
|
人工智能
|
存储 分布式计算 DataWorks
DataWorks产品使用合集之在本地客户端一直无法连接ADB MySQL,是什么原因
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
174 0
|
存储 NoSQL MongoDB
深入详解MongoDB索引的数据组织结构
深入详解MongoDB索引的数据组织结构
|
数据采集 机器学习/深度学习 算法
力扣79题:单词搜索
力扣79题:单词搜索
|
测试技术 C++
c++优先队列priority_queue(自定义比较函数)
c++优先队列priority_queue(自定义比较函数)
1280 0