LeetCode 1299.將每個元素替換為右側最大元素:倒序遍歷,維護最大值,原地修改

【LetMeFly】1299.將每個元素替換為右側最大元素:倒序遍歷,維護最大值,原地修改

力扣題目鏈接:https://leetcode.cn/problems/replace-elements-with-greatest-element-on-right-side/

給你一個數組?arr?,請你將每個元素用它右邊最大的元素替換,如果是最后一個元素,用?-1 替換。

完成所有替換操作后,請你返回這個數組。

?

示例 1:

輸入:arr = [17,18,5,4,6,1]
輸出:[18,6,6,6,1,-1]
解釋:
- 下標 0 的元素 --> 右側最大元素是下標 1 的元素 (18)
- 下標 1 的元素 --> 右側最大元素是下標 4 的元素 (6)
- 下標 2 的元素 --> 右側最大元素是下標 4 的元素 (6)
- 下標 3 的元素 --> 右側最大元素是下標 4 的元素 (6)
- 下標 4 的元素 --> 右側最大元素是下標 5 的元素 (1)
- 下標 5 的元素 --> 右側沒有其他元素,替換為 -1

示例 2:

輸入:arr = [400]
輸出:[-1]
解釋:下標 0 的元素右側沒有其他元素。

?

提示:

  • 1 <= arr.length <= 104
  • 1 <= arr[i] <= 105

解題方法:模擬

使用一個變量M記錄右邊元素最大值,初始值為-1

從后向前遍歷數組,使用nextM記錄遍歷完這個元素之后的最大值(nextM = max(arr[i], M)),更新這個元素為M,并更新MnextM

最終返回arr即為答案。

  • 時間復雜度 O ( l e n ( a r r ) ) O(len(arr)) O(len(arr))
  • 空間復雜度 O ( 1 ) O(1) O(1)

AC代碼

C++
/** @Author: LetMeFly* @Date: 2025-02-16 10:21:04* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-02-16 10:22:18*/
class Solution {
public:vector<int> replaceElements(vector<int>& arr) {int M = -1;for (int i = arr.size() - 1; i >= 0; i--) {int nM = max(M, arr[i]);arr[i] = M;M = nM;}return arr;}
};
Python
'''
Author: LetMeFly
Date: 2025-02-16 10:21:11
LastEditors: LetMeFly.xyz
LastEditTime: 2025-02-16 10:23:15
'''
from typing import Listclass Solution:def replaceElements(self, arr: List[int]) -> List[int]:M = -1for i in range(len(arr) - 1, -1, -1):arr[i], M = M, max(arr[i], M)return arr
Java
/** @Author: LetMeFly* @Date: 2025-02-16 10:21:15* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-02-16 10:24:13*/
class Solution {public int[] replaceElements(int[] arr) {int M = -1;for (int i = arr.length - 1; i >= 0; i--) {int nM = Math.max(M, arr[i]);arr[i] = M;M = nM;}return arr;}
}
Go
/** @Author: LetMeFly* @Date: 2025-02-16 10:21:19* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-02-16 10:26:54*/
package mainfunc max_REWGEORS(a, b int) int {if a > b {return a}return b
}func replaceElements(arr []int) []int {M := -1for i := len(arr) - 1; i >= 0; i-- {nM := max_REWGEORS(arr[i], M)arr[i] = MM = nM}return arr
}

同步發文于CSDN和我的個人博客,原創不易,轉載經作者同意后請附上原文鏈接哦~

千篇源碼題解已開源

Tisfy:https://blog.letmefly.xyz/2025/02/16/LeetCode 1299.將每個元素替換為右側最大元素/

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

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

相關文章

機器學習面試題匯總

1. 基礎知識 什么是監督學習和無監督學習? 監督學習是基于已標注的訓練數據來學習預測模型;無監督學習則是在沒有標簽的數據上進行學習,尋找數據的結構或模式。什么是過擬合和欠擬合? 過擬合是指模型在訓練數據上表現很好,但在測試數據上表現差。欠擬合是指模型在訓練數據…

【SQL教程|07】sql中條件查詢where用法示例

SQL WHERE 條件查詢教程 在SQL中&#xff0c;WHERE 條件用于在 SELECT 語句后過濾結果集&#xff0c;只返回符合條件的記錄。它幫助我們從大量數據中提取所需的信息。以下是使用 WHERE 條件的逐步指南。 1. 基本語法 SELECT [字段] FROM [表] WHERE [條件];SELECT&#xff1a…

力扣 跳躍游戲 II

貪心算法&#xff0c;存下每一步的最遠&#xff0c;去達到全局的最小跳躍次數。 題目 從題中要達到最少次數&#xff0c;肯定是每一步盡可能走遠一點。但注意j被限制了范圍&#xff0c;這種不用想每一步遍歷時肯定選最大的num[i]&#xff0c;但要注意&#xff0c;題中是可以到…

如何查看 Linux 服務器的 MAC 地址:深入解析與實踐指南

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

Linux驅動學習(二)--字符設備

設備分類 字符設備塊設備網絡設備 內核結構圖&#xff1a; 字符設備號 字符設備號是32位的無符號整型值 高12位&#xff1a;主設備號低20位&#xff1a;次設備號 查看設備號 cat /proc/devices 設備號構造 直接使用宏MKDEV #define MKDEV(ma,mi) (((ma) << MINORBITS…

開發小技巧分享 02:xml解析工具

1.百度詞條 可擴展標記語言 (Extensible Markup Language, XML) &#xff0c;標準通用標記語言的子集&#xff0c;可以用來標記數據、定義數據類型&#xff0c;是一種允許用戶對自己的標記語言進行定義的源語言。 XML是標準通用標記語言 可擴展性良好,內容與形式分離,遵循嚴格的…

ffmpeg configure 研究1-命令行參數的分析

author: hjjdebug date: 2025年 02月 14日 星期五 17:16:12 CST description: ffmpeg configure 研究1 ./configure 命令行參數的分析 文章目錄 1 configure 對命令行參數的分析,在4019行1.1 函數名稱: is_in1.2. 函數名稱: enable1.3. 函數名稱: set_all 2 執行退出判斷的關鍵…

Linux操作系統:從分布式計算到容器化的實踐

Linux集群與高可用性技術&#xff1a;從分布式計算到容器化的實踐 摘要 隨著云計算和大數據技術的飛速發展&#xff0c;Linux集群和高可用性技術已成為現代IT架構的核心組成部分。本文以幽默風趣的方式&#xff0c;深入探討了Linux集群技術&#xff08;如Hadoop、Spark等分布…

python和pycharm 和Anaconda的關系

好的&#xff0c;下面我會詳細說明 Python、PyCharm 和 Anaconda 三者的關系&#xff0c;并逐一解釋它們的功能和作用。 1. Python&#xff08;編程語言&#xff09; 定義&#xff1a;Python 是一種高級編程語言&#xff0c;設計簡潔&#xff0c;易于學習&#xff0c;且功能強…

STM32 外部中斷和NVIC嵌套中斷向量控制器

目錄 背景 外部中斷/事件控制器(EXTI) 主要特性 功能說明 外部中斷線 嵌套向量中斷控制器 特性 ?中斷線&#xff08;Interrupt Line&#xff09; 中斷線的定義和作用 STM32中斷線的分類和數量 優先級分組 搶占優先級&#xff08;Preemption Priority&#xff09; …

代碼隨想錄算法【Day49】

Day49 42. 接雨水 思路 這道題利用單調棧進行橫向求解。對于每一個元素&#xff0c;找到它右邊第一個比它大的元素和左邊第一個比它大&#xff08;或者與它相等的元素&#xff0c;當然這種情況可以忽略&#xff09;&#xff0c;最后計算雨水的存儲量&#xff1a;&#xff08…

PHP 網絡編程介紹

PHP 學習資料 PHP 學習資料 PHP 學習資料 在當今數字化時代&#xff0c;網絡編程是開發各類應用必不可少的技能。PHP 作為一門廣泛應用于 Web 開發的編程語言&#xff0c;同樣具備強大的網絡編程能力。接下來&#xff0c;我們將深入探討 PHP 中網絡連接的建立、Socket 編程、…

《深度學習》——ResNet網絡

文章目錄 ResNet網絡ResNet網絡實例導入所需庫下載訓練數據和測試數據設置每個批次的樣本個數判斷是否使用GPU定義殘差模塊定義ResNet網絡模型導入GPU定義訓練函數定義測試函數創建損失函數和優化器訓練測試數據結果 ResNet網絡 ResNet&#xff08;Residual Network&#xff0…

為什么要學習AI、掌握AI技能有什么用?

隨著人工智能的迅速的發展&#xff0c;DeepSeek的爆火&#xff0c;加之目前就業環境的走向&#xff0c;越來越多的職場朋友開始關注到AI的發展&#xff0c;重視AI技能的掌握。不少同學都會問&#xff1a;“職場人為什么要學習AI、掌握AI技能&#xff1f;” 為什么要學AI 現…

AIP-146 泛化域

編號146原文鏈接AIP-146: Generic fields狀態批準創建日期2019-05-28更新日期2019-05-28 API中的大多數域&#xff0c;無論是在請求、資源還是自定義應答中&#xff0c;都有具體的類型或模式。這個模式是約定的一部分&#xff0c;開發者依此約定進行編碼。 然而&#xff0c;偶…

vue3和vue2的組件開發有什么區別

Vue3和Vue2在組件開發上存在不少差異&#xff0c;下面從多個方面詳細介紹&#xff1a; 響應式原理 Vue2&#xff1a;用Object.defineProperty()方法來實現響應式。打個比方&#xff0c;它就像給對象的每個屬性都安排了一個“小管家”&#xff0c;屬性被訪問或修改時&#xff0…

【NLP 25、模型訓練方式】

目錄 一、按學習范式分類 1. 監督學習&#xff08;Supervised Learning&#xff09; 2. 無監督學習&#xff08;Unsupervised Learning&#xff09; 3. 半監督學習&#xff08;Semi-supervised Learning&#xff09; 4. 強化學習&#xff08;Reinforcement Learning, RL&#x…

1-知識圖譜-概述和介紹

知識圖譜&#xff1a;浙江大學教授 陳華軍 知識圖譜 1課時 http://openkg.cn/datasets-type/ 知識圖譜的價值 知識圖譜是有什么用&#xff1f; 語義搜索 問答系統 QA問答對知識圖譜&#xff1a;結構化圖 輔助推薦系統 大數據分析系統 自然語言理解 輔助視覺理解 例…

零基礎學QT、C++(一)安裝QT

目錄 如何快速學習QT、C呢&#xff1f; 一、編譯器、項目構建工具 1、編譯器&#xff08;介紹2款&#xff09; 2、項目構建工具 二、安裝QT 1、下載QT安裝包 2、運行安裝包 3、運行QT creator 4、導入開源項目 總結 閑談 如何快速學習QT、C呢&#xff1f; 那就是項目驅動法&…

STM32外設SPI FLASH應用實例

STM32外設SPI FLASH應用實例 1. 前言1.1 硬件準備1.2 軟件準備 2. 硬件連接3. 軟件實現3.1 SPI 初始化3.2 QW128 SPI FLASH 驅動3.3 乒乓存儲實現 4. 測試與驗證4.1 數據備份測試4.2 數據恢復測試 5 實例5.1 參數結構體定義5.2 存儲參數到 SPI FLASH5.3 從 SPI FLASH 讀取參數5…