力扣hot100---152.乘積最大子數組

給你一個整數數組?nums?,請你找出數組中乘積最大的非空連續子數組(該子數組中至少包含一個數字),并返回該子數組所對應的乘積。

測試用例的答案是一個?32-位?整數。

示例 1:

輸入: nums = [2,3,-2,4]
輸出:6解釋:?子數組 [2,3] 有最大乘積 6。

示例 2:

輸入: nums = [-2,0,-1]
輸出: 0
解釋:?結果不能為 2, 因為 [-2,-1] 不是子數組。

提示:

  • 1 <= nums.length <= 2 * 104
  • -10 <= nums[i] <= 10
  • nums?的任何子數組的乘積都?保證?是一個?32-位?整數

?要求非空連續子數組對應的最大乘積,由于數組中都是整數,首先應該想到乘積是乘的數越多乘積越大,但是前提是相乘之后為正數。

題目中數組中存在負數,那么會導致最大的值變的最小最小的值變的最大

于是我們可以通過遍歷數組,定義一個初始值為1的變量,依次乘以數組的值,每次取最大值,但是只從前往后乘,會出現 -2,2,2,2,2這種情況,導致最大值一直是負數,但是實際上最大值應該是2*2*2*2。因此我們可以再從后往前乘,就能求出上述例子的最大值。下面給出實際代碼:

class Solution {public int maxProduct(int[] nums) {int n = nums.length;int res = nums[0];int x = 1;for(int i = 0;i < n;i++){x *= nums[i];res = Math.max(res,x);if(nums[i] == 0) x = 1;}x = 1;for(int i = n - 1;i >= 0;i--){x *= nums[i];res = Math.max(res,x);if(nums[i] == 0) x = 1;}return res;}
}

?方法二:動態規劃

由上述分析可知,數組中存在負數,那么會導致最大的值變的最小最小的值變的最大

因此我們需要維護兩個數組,一個存儲最大值,一個存儲最小值,每次對比當前值和二者乘以當前數,取三者最大值。

imax[i] = Math.max(Math.max(imax[i-1] * x,imin[i-1] * x),x);

下面給出代碼

class Solution {public int maxProduct(int[] nums) {int n = nums.length;int res = nums[0];int[] imax = new int[n];int[] imin = new int[n];imax[0] = imin[0] = nums[0];for(int i = 1;i < n;i++){int x = nums[i];imax[i] = Math.max(Math.max(imax[i-1] * x,imin[i-1] * x),x);imin[i] = Math.min(Math.min(imin[i-1] * x,imax[i-1] * x),x);res = Math.max(res,imax[i]);}return res;}
}

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83924.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83924.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83924.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

什么是DevOps智能平臺的核心功能?

在數字化轉型的浪潮中&#xff0c;DevOps智能平臺已成為企業提升研發效能、加速產品迭代的核心工具。然而&#xff0c;許多人對“DevOps智能平臺”的理解仍停留在“自動化工具鏈”的表層概念。今天&#xff0c;我們從一個真實場景切入&#xff1a;假設你是某互聯網公司的技術負…

柯尼卡美能達Konica Minolta bizhub 205i打印機信息

基本參數 產品類型&#xff1a;激光數碼復合機顏色類型&#xff1a;黑白涵蓋功能&#xff1a;復印、打印、掃描最大原稿尺寸&#xff1a;A3內存容量&#xff1a;256MB供紙容量&#xff1a;標配 350 頁&#xff0c;最大 1350 頁介質重量&#xff1a;標準紙盒 64-157g/㎡&#xf…

虛擬機與宿主機應用通信配置指南

1. 選擇虛擬機網絡模式 橋接模式 (Bridged) 客戶機獲得獨立局域網IP&#xff0c;與宿主機同網段。 客戶機可直接訪問宿主機IP&#xff08;如 192.168.1.x&#xff09;。 Host-Only 模式 僅宿主機與客戶機之間通信&#xff0c;宿主機通常有一個虛擬網卡&#xff08;如 192.16…

網絡庫libhv介紹

libhv是一個類似于libevent、libev、libuv的跨平臺網絡庫&#xff0c;提供了更易用的接口和更豐富的協議&#xff0c;用來開發TCP/UDP/SSL/HTTP/WebSocket/MQTT 客戶端/服務端。源碼地址&#xff1a;https://github.com/ithewei/libhv&#xff0c;最新發布版本為v1.3.3&#xf…

施耐德特價型號伺服電機VIA0703D31A1022、常見故障

?? ?一、啟動類故障? ?電機無法啟動? ?可能原因?&#xff1a;電源未接通、制動器未釋放、接線錯誤或控制器故障。?解決措施?&#xff1a; 檢查電源線路及斷路器狀態&#xff1b;驗證制動器是否打開&#xff08;帶制動器型號&#xff09;&#xff1b;核對電機與控制器…

【Redis從入門到精通實戰文章匯總】

&#x1f4da;博客主頁&#xff1a;代碼探秘者 ?專欄&#xff1a;文章正在持續更新ing… ?C語言/C&#xff1a;C&#xff08;詳細版&#xff09; 數據結構&#xff09; 十大排序算法 ?Java基礎&#xff1a;JavaSE基礎 面向對象大合集 JavaSE進階 Java版數據結構JDK新特性…

MCP 技術完全指南:微軟開源項目助力 AI 開發標準化學習

引言 在人工智能快速發展的今天&#xff0c;如何讓 AI 模型與客戶端應用程序之間建立標準化的交互機制&#xff0c;已成為開發者們亟待解決的關鍵問題。微軟近期開源的 mcp-for-beginners 項目&#xff0c;為我們提供了一個系統性學習 Model Context Protocol (MCP) 的絕佳機會…

SQL進階之旅 Day 20:鎖與并發控制技巧

【JDK21深度解密 Day 20】鎖與并發控制技巧 文章簡述 在高并發的數據庫環境中&#xff0c;鎖與并發控制是保障數據一致性和系統穩定性的核心機制。本文作為“SQL進階之旅”系列的第20天&#xff0c;深入探討SQL中的鎖機制、事務隔離級別以及并發控制策略。文章從理論基礎入手…

Qt(part 2)1、Qwindow(菜單欄,工具欄,狀態欄),鉚接部件,核心部件 ,2、添加資源文件 3、對話框

1、Qwindow tips&#xff1a;1&#xff0c;首先為什么創建出的對象基本都是指針形式&#xff0c;個人覺得是對象樹的原因&#xff08;自動釋放內存&#xff09;&#xff0c;指針來訪問成員函數->的形式。2&#xff0c;菜單欄只能一個的&#xff0c;放窗口基本Set&#xff0c…

一款“短小精悍的”手機錄屏軟件

這個時代&#xff0c;手機自帶錄屏功能已經不是什么稀奇的事情了&#xff0c;但是手機自帶的錄屏功能不都是完美的&#xff0c;無法靜音錄屏、、不能修改畫質、不能剪輯、不能自定義水印......emmm.....貌似除了錄屏就什么都不會 今天分享的這款軟件——ADV屏幕錄制漢化版&…

力扣HOT100之二分查找:153. 尋找旋轉排序數組中的最小值

這道題是上一道題&#xff1a;33. 搜索旋轉排序數組的前置題&#xff0c;有點沒看懂力扣為什么要這樣安排題目順序&#xff0c;應該把這道題按排在前面才對啊。。。這道題的思路已經在上一道題的思路中說過了&#xff0c;這里就直接復制粘貼上一篇博客中的內容了。 我們閱讀完題…

libiec61850 mms協議異步模式

之前項目中使用到libiec61850庫&#xff0c;都是服務端開發。這次新的需求要接收服務端的遙測數據&#xff0c;這就涉及到客戶端開發了。 客戶端開發沒搞過啊&#xff0c;挑戰不少&#xff0c;但是人不就是通過戰勝困難才成長的嘛。通過查看libiec61850的客戶端API發現&#xf…

【 知你所想 】基于ernie-x1-turbo推理模型實現趣味猜心游戲

&#x1f31f; 項目特點 &#x1f916; 智能AI&#xff1a;基于文心一言大模型&#xff0c;具有強大的推理能力&#x1f3af; 實時思考&#xff1a;展示AI的思考過程&#xff0c;讓你了解AI是如何推理的&#x1f3ae; 互動性強&#xff1a;通過簡單的"是/否"問答&…

Excel 模擬分析之單變量求解簡單應用

正向求解 利用公式根據貸款總額、還款期限、貸款利率&#xff0c;求每月還款金額 反向求解 根據每月還款能力&#xff0c;求最大能承受貸款金額 參數&#xff1a; 目標單元格&#xff1a;求的值所在的單元格 目標值&#xff1a;想要達到的預期值 可變單元格&#xff1a;變…

關于easyexcel動態下拉選問題處理

前些日子突然碰到一個問題&#xff0c;說是客戶的導入文件模版想支持部分導入內容的下拉選&#xff0c;于是我就找了easyexcel官網尋找解決方案&#xff0c;并沒有找到合適的方案&#xff0c;沒辦法只能自己動手并分享出來&#xff0c;針對Java生成Excel下拉菜單時因選項過多導…

【Qt】之【Get√】【Bug】通過值捕獲(或 const 引用捕獲)傳進 lambda,會默認復制成 const

通過值捕獲&#xff08;或 const 引用捕獲&#xff09;傳進 lambda&#xff0c;會默認復制成 const。 背景 匿名函數外部定義 QSet<QString> nameSet,需要傳入匿名函數使用修改 connect(dlg, ..., [nameSet](...) {nameSet.insert(name); // ? 這里其實是 const QSet…

css元素的after制作斜向的刪除線

<div class"price_div"></div>.price_div{position: relative; } ::after{content: ;position: absolute;left: 0;top: 50%;width: 100%;height: 2px;background: #FF186B;transform: rotate(-5deg); }

uniapp map組件的基礎與實踐

UniApp 中的 map 組件用于在應用中展示地圖,并且支持在地圖上添加標記、繪制線條和多邊形等功能。以下是一些基本用法: 1. 基本結構 首先,確保你在頁面的 .vue 文件中引入了 map 組件。以下是創建一個簡單地圖的基本代碼結構: <template><view class="con…

深入理解PHP安全漏洞:文件包含與SSRF攻擊全解析

深入理解PHP安全漏洞&#xff1a;文件包含與SSRF攻擊全解析 前言 在Web安全領域&#xff0c;PHP應用程序的安全問題一直備受關注。本文將深入探討兩種常見的PHP安全漏洞&#xff1a;文件包含漏洞和服務器端請求偽造(SSRF)&#xff0c;幫助開發者理解漏洞原理、利用方式以及防…

MS358A 低功耗運算放大器 車規

MS358A 低功耗運算放大器 車規 產品簡述 MS358A 是雙通道運算放大器&#xff0c;具有低功耗、寬電源電壓范圍、高單位增益帶寬的特性。在特定情況下&#xff0c;壓擺率可以達到0.4V/μs 。每個通道的靜態電流 (5V) 只有 430μA 。 MS358A輸入共模范圍可以到地&#xff0c;同時…