欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

go語言題解LeetCode1299將每個元素替換為右側最大元素

 更新時間:2023年01月03日 10:35:19   作者:劉09k11  
這篇文章主要為大家介紹了go語言LeetCode刷題1299將每個元素替換為右側最大元素示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

題目描述

1299. 將每個元素替換為右側最大元素 - 力扣(LeetCode)

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

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

示例 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 <= 10^4

1 <= arr[i] <= 10^5

思路分析

從題目可以看出

  • 從右到左遍歷的話,剛好是從遍歷過的數(shù)中去尋找最大值。
  • 從左到右遍歷的話,那么就需要提前比較還未遍歷的值。

不難看出從右到左遍歷只需要O(n)時間復雜度,

從左到右遍歷需要O(n^2)的時間復雜度

在這個題感悟到,其實有時候生活中遇到困難了,不妨換個思維去想一下

也許當前困難不過是對自己的一種考驗

多花點思維思考去解決比用簡單的惰性思維去“懶”解決要為后續(xù)實現(xiàn)的節(jié)省更多時間

AC 代碼

class Solution {
    public int[] replaceElements(int[] arr) {
        int max = -1;
        for (int i = arr.length - 1; i >= 0; i--) {
            int tmp = arr[i];
            arr[i] = max;
            if (tmp > max) {
                max = tmp;
            }
        }
        return arr;
    }
}

Java 百分百 - 將每個元素替換為右側最大元素

逆序遍歷罷了

代碼

class Solution {
    public int[] replaceElements(int[] arr) {
       int max = -1;
       int[] ans = new int[arr.length];
       for(int i = arr.length-1;i >= 0;i--){
           int temp = arr[i];
           ans[i] = max;
           max = Math.max(max,temp);
       }
       return ans;
    }
}

從右往左一次遍歷 - 將每個元素替換為右側最大元素

從右往左遍歷,先記錄右邊最大值 rightMax 為最后一個值,向左每次更新 rightMax,使用變量 t 先記住當前 arr[i] 就可以了。

class Solution {
    public int[] replaceElements(int[] arr) {
        int rightMax = arr[arr.length - 1];
        arr[arr.length - 1] = -1;
        for (int i = arr.length - 2; i >= 0; i--) {
            int t = arr[i];
            arr[i] = rightMax;
            if (t > rightMax)
                rightMax = t;
        }
        return arr;
    }
}

以上就是go語言題解LeetCode1299將每個元素替換為右側最大元素的詳細內(nèi)容,更多關于go 元素替換右側最大元素的資料請關注腳本之家其它相關文章!

相關文章

  • golang協(xié)程與線程區(qū)別簡要介紹

    golang協(xié)程與線程區(qū)別簡要介紹

    這篇文章主要介紹了golang協(xié)程與線程區(qū)別簡要介紹,進程是操作系統(tǒng)資源分配的基本單位,是程序運行的實例,線程是操作系統(tǒng)調(diào)度到CPU中執(zhí)行的基本單位
    2022-06-06
  • 詳解Go語言中數(shù)組,切片和映射的使用

    詳解Go語言中數(shù)組,切片和映射的使用

    Arrays (數(shù)組), Slices (切片) 和 Maps (映射) 是常見的一類數(shù)據(jù)結構。這篇文章將為大家詳細介紹一下Go語言中數(shù)組,切片和映射的使用,感興趣的可以學習一下
    2022-07-07
  • go json轉換實踐中遇到的坑

    go json轉換實踐中遇到的坑

    在使用 go 語言開發(fā)過程中,經(jīng)常需要使用到 json 包來進行 json 和 struct 的互相轉換,這篇文章主要介紹了go json轉換實踐中遇到的坑,非常具有實用價值,需要的朋友可以參考下
    2018-12-12
  • 6行代碼快速解決golang TCP粘包問題

    6行代碼快速解決golang TCP粘包問題

    在用golang開發(fā)人工客服系統(tǒng)的時候碰到了粘包問題,那么什么是粘包呢?下面這篇文章主要給大家介紹了關于如何通過6行代碼快速解決golang TCP粘包問題的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒下面隨著小編來一起學習學習吧。
    2018-03-03
  • Golang巧用defer進行錯誤處理的方法

    Golang巧用defer進行錯誤處理的方法

    錯誤處理是程序的重要組成部分,有效且優(yōu)雅的處理錯誤是大多數(shù)程序員的追求,下面這篇文章主要給大家介紹了關于Golang中巧用defer進行錯誤處理的方法,文中通過示例介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • Golang中的泛型你真的了解嗎

    Golang中的泛型你真的了解嗎

    Golang?在?1.18?版本更新后引入了泛型,這是一個重要的更新,Gopher?萬眾矚目,為?Golang?帶來了更多的靈活性和可重用性,今天,我們將深入探討泛型的概念、為什么需要泛型、泛型的語法,并探討如何在實踐中使用它
    2023-05-05
  • Golang中下劃線(_)的不錯用法分享

    Golang中下劃線(_)的不錯用法分享

    golang中的下劃線表示忽略變量的意思,也沒有產(chǎn)生新的變量,但是后面的表達式依然會被執(zhí)行,本文為大家整理了golang中下劃線的一些不錯的用法,需要的可以參考下
    2023-05-05
  • 一文詳解如何使用 Golang 處理文件

    一文詳解如何使用 Golang 處理文件

    Golang 是一種強類型、靜態(tài)編譯、并發(fā)性高的編程語言,我們將重點介紹 Golang 中的文件基本操作,包括創(chuàng)建文件與查看狀態(tài),重命名與移動,刪除與截斷,讀寫文件,以及權限控制,跟著小編一起來學習吧
    2023-04-04
  • golang 設置web請求狀態(tài)碼操作

    golang 設置web請求狀態(tài)碼操作

    這篇文章主要介紹了golang 設置web請求狀態(tài)碼操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang二進制反匯編問題

    Golang二進制反匯編問題

    這篇文章主要介紹了Golang二進制反匯編問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論