Python-92:最大乘積區間問題

問題描述

小R手上有一個長度為?n?的數組 (n > 0),數組中的元素分別來自集合?[0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]。小R想從這個數組中選取一段連續的區間,得到可能的最大乘積。

你需要幫助小R找到最大乘積的區間,并輸出這個區間的起始位置?x?和結束位置?y?(x ≤ y)。如果存在多個區間乘積相同的情況,優先選擇?x?更小的區間;如果?x?相同,選擇?y?更小的區間。

注意:數組的起始位置為?1,結束位置為?n

代碼

from math import log

def solution(n: int, arr: list[int]) -> list[int]:

? ? # Edit your code here

? ? """

? ? 尋找最大乘積區間

? ? Args:

? ? ? ? n: 數組長度

? ? ? ? arr: 輸入數組

? ? Returns:

? ? ? ? 返回最大乘積區間的起始和結束位置 [x, y]

? ? """

? ? # 結果數組,保存起始位置x和結束位置y

? ? result = [1, 1]

? ? # 初始化最大對數和

? ? max_log_sum = float('-inf') if arr[0] == 0 else log(arr[0])

? ?

? ? # 遍歷所有可能的起始位置

? ? for i in range(n):

? ? ? ? # 如果起始位置是0,單獨處理

? ? ? ? if arr[i] == 0:

? ? ? ? ? ? if max_log_sum == float('-inf') and (result[0] > i + 1):

? ? ? ? ? ? ? ? result[0] = i + 1

? ? ? ? ? ? ? ? result[1] = i + 1

? ? ? ? ? ? continue

? ? ? ? ? ?

? ? ? ? # 當前區間的對數和

? ? ? ? current_log_sum = 0

? ? ? ? # 遍歷從i開始的所有可能的結束位置

? ? ? ? for j in range(i, n):

? ? ? ? ? ? # 如果當前數是0,結束當前內層循環

? ? ? ? ? ? if arr[j] == 0:

? ? ? ? ? ? ? ? break

? ? ? ? ? ?

? ? ? ? ? ? # 累加對數

? ? ? ? ? ? current_log_sum += log(arr[j])

? ? ? ? ? ?

? ? ? ? ? ? # 更新最大值和對應的區間

? ? ? ? ? ? if (current_log_sum > max_log_sum or

? ? ? ? ? ? ? ? (abs(current_log_sum - max_log_sum) < 1e-10 and i + 1 < result[0]) or

? ? ? ? ? ? ? ? (abs(current_log_sum - max_log_sum) < 1e-10 and i + 1 == result[0] and j + 1 < result[1])):

? ? ? ? ? ? ? ? max_log_sum = current_log_sum

? ? ? ? ? ? ? ? result[0] = i + 1

? ? ? ? ? ? ? ? result[1] = j + 1

? ?

? ? return result


?

if __name__ == "__main__":

? ? # Add your test cases here

? ? print(solution(5, [1, 2, 4, 0, 8]) == [1, 3])

? ? print(solution(7, [1, 2, 4, 8, 0, 256, 0]) == [6, 6])

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

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

相關文章

windows觸摸板快捷指南

以下是結構化整理后的觸控手勢說明&#xff0c;采用清晰的層級劃分和標準化表述&#xff1a; **觸控手勢操作規范****1. 單指操作****2. 雙指操作****3. 三指操作****4. 四指操作** **優化說明&#xff1a;** 觸控手勢操作規范 1. 單指操作 手勢功能描述等效操作單擊滑動選擇…

VSCode launch.json 配置參數詳解

使用 launch.json 配置調試環境時&#xff0c;會涉及到多個參數&#xff0c;用于定義調試器的行為和目標執行環境。以下是一些常用的配置參數&#xff1a; 1、"type" &#xff1a;指定調試器的類型&#xff0c;例如 "node" 表示 Node.js 調試器&#xff0…

mAP、AP50、AR50:目標檢測中的核心評價指標解析

在目標檢測任務中&#xff0c;評價指標是衡量模型性能的核心工具。其中&#xff0c;mAP&#xff08;mean Average Precision&#xff09;、AP50&#xff08;Average Precision at IoU0.5&#xff09;和AR50&#xff08;Average Recall at IoU0.5&#xff09;是最常用的指標。本…

【論文閱讀】A Survey on Multimodal Large Language Models

目錄 前言一、 背景與核心概念1-1、多模態大語言模型&#xff08;MLLMs&#xff09;的定義 二、MLLMs的架構設計2-1、三大核心模塊2-2、架構優化趨勢 三、訓練策略與數據3-1、 三階段訓練流程 四、 評估方法4-1、 閉集評估&#xff08;Closed-set&#xff09;4-2、開集評估&…

[已解決] LaTeX “Unicode character“ 報錯 (中文字符處理)

問題&#xff1a; 寫 LaTeX 文檔&#xff0c;特別是包含中文時&#xff0c;經常遇到類似下圖的 “Unicode character XXXXXX” 報錯 (X) Unicode character 本 (U672C) LaTeX [行 xx, 列 x] (X) Unicode character 報 (U62A5) LaTeX [行 xx, 列 x] ...這通常意味著我們的 LaTe…

現貨黃金跌破 3160 美元,市場行情劇烈波動?

在 5 月 16 日的交易時段中&#xff0c;現貨黃金市場出現戲劇性變化&#xff0c;價格短時間內大幅跳水。截至當日 20:04&#xff0c;現貨黃金短線下挫 20 美元&#xff0c;一舉跌破 3160 美元 / 盎司&#xff0c;日內跌幅達 2.56%&#xff1b;紐約期金日內也大跌 2%&#xff0c…

智慧校園(含實驗室)智能化專項匯報方案

該方案聚焦智慧校園(含實驗室)智能化建設,針對傳統實驗室在運營監管、環境監測、安全管控、排課考勤等方面的問題,依據《智慧校園總體框架》等標準,設計數字孿生平臺、實驗室綜合管理平臺、消安電一體化平臺三大核心平臺,涵蓋通信、安防、建筑設備管理等設施,涉及 395 個…

【Python爬蟲 !!!!!!政府招投標數據爬蟲項目--醫療實例項目文檔(提供源碼!!!)!!!學會Python爬蟲輕松賺外快】

政府招投標數據爬蟲項目--醫療實例項目文檔 1. 項目概述1.1 項目目標1.2 技術棧2. 系統架構2.1 模塊劃分2.2 流程示意圖3. 核心模塊設計3.1 反爬處理模塊(`utils/anti_crawler.py`)3.1.1 功能特性3.1.2 關鍵代碼3.2 爬蟲模塊(`crawler/spiders/`)3.2.1 基類設計(`base_spi…

RabbitMQ是什么?應用場景有哪些?

RabbitMQ 是一款開源的消息代理中間件,基于 AMQP(高級消息隊列協議)實現,用于在分布式系統中進行異步通信和消息傳遞。它通過將消息的發送者和接收者解耦,提高了系統的可擴展性、可靠性和靈活性。 核心特點 多協議支持:不僅支持 AMQP,還兼容 STOMP、MQTT 等多種消息協議…

RT Thread FinSH(msh)調度邏輯

文章目錄 概要FinSH功能FinSH調度邏輯細節小結 概要 RT-Thread&#xff08;Real-Time Thread&#xff09;作為一款開源的嵌入式實時操作系統&#xff0c;在嵌入式設備領域得到了廣泛應用。 該系統不僅具備強大的任務調度功能&#xff0c;還集成了 FinSH命令行系統&#xff0c…

我司助力高校打造「智慧創新AI學習中心」

為推動AI教育融合跨領域應用&#xff0c;東吳大學于2025年4月舉行「智慧創新AI學習中心」揭牌儀式&#xff0c;并宣布正式啟動AI特色課程與教學空間建置計畫。此次建置由我司協助整體教室空間與設備規劃&#xff0c;導入最新NVIDIA GeForce RTX 50系列桌上型電腦&#xff0c;并…

給你的matplotlib images添加scale Bar

?Scale Bar&#xff08;比例尺&#xff09;用于直觀表示圖像與實際物理尺寸&#xff08;如微米、毫米等&#xff09;的對應關系。例如&#xff0c;在顯微鏡圖像中&#xff0c;比例尺可以標注“75μm”表示圖中某線段對應的實際長度。 這里分享使用matplotlib中的imshow結合ma…

基于React的高德地圖api教程004:線標記繪制、修改、刪除功能實現

文章目錄 4、線繪制4.1 繪制線標記4.1.1 開啟線標記繪制模式4.1.2 繪制線標記4.1.3 關閉線標記模式4.2 可視化線標記數據面板4.3 修改線標記4.3.1 修改線標記路徑4.3.2 修改線標記名稱和顏色4.4 刪除線標記4.5 定位線標記4.6 代碼下載4.04、線繪制 4.1 繪制線標記 4.1.1 開啟…

lc42接雨水

1.原題 42. 接雨水 - 力扣&#xff08;LeetCode&#xff09; 給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖&#xff0c;計算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 2.題目解析 這一題是經常被考到的一道算法題&#xff0c;其中最簡單最好用的方法就是雙指…

【讀代碼】端到端多模態語言模型Ultravox深度解析

一、項目基本介紹 Ultravox是由Fixie AI團隊開發的開源多模態大語言模型,專注于實現音頻-文本的端到端實時交互。項目基于Llama 3、Mistral等開源模型,通過創新的跨模態投影架構,繞過了傳統語音識別(ASR)的中間步驟,可直接將音頻特征映射到語言模型的高維空間。 核心優…

力扣HOT100之二叉樹:98. 驗證二叉搜索樹

這道題之前也刷過&#xff0c;自己做了一遍&#xff0c;發現卡在了第70多個樣例&#xff0c;才發現自己沒有利用二叉搜索樹的性質&#xff0c;但凡涉及到二叉搜索樹&#xff0c;應該首先考慮中序遍歷&#xff01;&#xff01;&#xff01; 被卡住的測試樣例是這樣的&#xff1a…

Centos7.9同步外網yum源至內網

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum makecache yum repolist安裝軟件 yum install -y yum-utils createrepo # yum-utils包含re…

HMDB51數據集劃分

生成訓練集、驗證集和測試集 每個split文件應該包含&#xff1a; 訓練集(id1): 70個視頻測試集(id2): 30個視頻未使用(id0): 剩余視頻 這是一個70/30的訓練/測試分割比例。標記為0的視頻被排除在當前實驗之外。實際上訓練集&#xff08;id1&#xff09;&#xff0c;驗證集&am…

Spring Boot 項目的計算機專業論文參考文獻

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論文…

【Linux】Linux安裝并配置MongoDB

目錄 1.添加倉庫 2.安裝 MongoDB 包 3.啟動 MongoDB 服務 4. 驗證安裝 5.配置 5.1.進入無認證模式 5.2.1創建用戶 5.2.2.開啟認證 5.2.3重啟 5.2.4.登錄 6.端口變更 7.卸載 7.1.停止 MongoDB 服務 7.2.禁用 MongoDB 開機自啟動 7.3.卸載 MongoDB 包 7.4.刪除數…