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

Java?C++題解leetcode769最多能完成排序的塊

 更新時(shí)間:2022年10月13日 16:39:31   作者:AnjaVon  
這篇文章主要為大家介紹了Java?C++題解leetcode769最多能完成排序的塊示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

題目要求

思路:模擬

Java

class Solution {
    public int maxChunksToSorted(int[] arr) {
        int n = arr.length, res = 0;
        int min = n, max = -1;
        for (int r = 0, l = 0; r < n; r++) {
            min = Math.min(min, arr[r]);
            max = Math.max(max, arr[r]);
            if (l == min && r == max) {
                res++;
                l = r + 1;
                min = n;
            }
        }
        return res;
    }
}
  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(1)

再改進(jìn)【拜題設(shè)限制所賜】

手推一遍上面的執(zhí)行過程發(fā)現(xiàn)最小值沒有什么意義,可以只用最大值衡量,找一個(gè)區(qū)間右端點(diǎn)rrr,這個(gè)r與arr在[0,r]內(nèi)的最大值相等;

  • 從頭開始統(tǒng)計(jì)當(dāng)前向前區(qū)間內(nèi)的最大值,若該值與遍歷下標(biāo)相等,則塊滿足題設(shè)條件,答案加一;
  • 然后無需進(jìn)行歸零,因?yàn)楹罄m(xù)的所有值一定都大于當(dāng)前塊的最大值;
  • 重復(fù)遍歷與比較。

之所以可以省略最小值的統(tǒng)計(jì),是因?yàn)閴K的大小由最大值決定,小的值都在前面的塊里被排序,所以一定能在當(dāng)前塊找到一個(gè)與左端點(diǎn)相等的值(最小值);

  • 此外,當(dāng)前統(tǒng)計(jì)到的最大值既是當(dāng)前區(qū)間內(nèi)的最大值,也是arr從頭至此的最大值。
class Solution {
    public int maxChunksToSorted(int[] arr) {
        int res = 0, max = -1;
        for (int r = 0; r < arr.length; r++) {
            max = Math.max(max, arr[r]);
            if (r == max)
                res++;
        }
        return res;
    }
}
  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(1)

C++

  • 第一萬次注意max變量和max方法的命名沖突……
class Solution {
public:
    int maxChunksToSorted(vector<int>& arr) {
        int res = 0, maxx = -1;
        for (int r = 0; r < arr.size(); r++) {
            maxx = max(maxx, arr[r]);
            if (r == maxx)
                res++;
        }
        return res;
    }
};
  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(1)

Rust

impl Solution {
    pub fn max_chunks_to_sorted(arr: Vec<i32>) -> i32 {
        let (mut res, mut maxx) = (0, -1);
        for r in 0..arr.len() {
            maxx = maxx.max(arr[r]);
            if r as i32 == maxx {
                res += 1;
            }
        }
        res
    }
}
  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(1)

總結(jié)

  • 簡單到?jīng)]什么好總結(jié)的……題設(shè)的限制極大地降低了題目難度,本來看題還沒有意識(shí)到,看到示例就意識(shí)到了今天可以擁有簡單題的快樂~
  • 看官方的題解管這個(gè)再改進(jìn)方法叫貪心,分析了好長好長……看著就頭疼
  • 還有其他解法用棧的,本質(zhì)上思路一樣,是理解比較淺但實(shí)現(xiàn)稍復(fù)雜的方法。

以上就是Java C++題解leetcode769最多能完成排序的塊的詳細(xì)內(nèi)容,更多關(guān)于Java C++最多能完成排序的塊的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • mybatis中關(guān)于in的使用方法及說明

    mybatis中關(guān)于in的使用方法及說明

    這篇文章主要介紹了mybatis中關(guān)于in的使用方法及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java中ArrayList實(shí)現(xiàn)原理及基本方法

    Java中ArrayList實(shí)現(xiàn)原理及基本方法

    這篇文章主要介紹了Java中ArrayList實(shí)現(xiàn)原理及基本方法,ArrayList是開發(fā)中非常常用的數(shù)據(jù)存儲(chǔ)容器之一,其底層是數(shù)組實(shí)現(xiàn)的,我們可以在集合中存儲(chǔ)任意類型的數(shù)據(jù),ArrayList是線程不安全的,擅長隨機(jī)訪問元素,插入和刪除較慢,需要的朋友可以參考下
    2023-08-08
  • SpringSecurity自定義登錄成功處理

    SpringSecurity自定義登錄成功處理

    這篇文章主要為大家詳細(xì)介紹了SpringSecurity自定義登錄成功處理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • mybatis-plus樂觀鎖實(shí)現(xiàn)方式詳解

    mybatis-plus樂觀鎖實(shí)現(xiàn)方式詳解

    這篇文章主要介紹了mybatis-plus樂觀鎖實(shí)現(xiàn)方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • SpringBoot中OKHttp和壓縮文件的使用實(shí)戰(zhàn)教程

    SpringBoot中OKHttp和壓縮文件的使用實(shí)戰(zhàn)教程

    本文介紹了如何在SpringBoot中使用OKHttp發(fā)起請求和處理壓縮文件,包括文件的存儲(chǔ)配置、實(shí)體類、配置類和初始化類的設(shè)置,以及如何通過主程序和測試類進(jìn)行實(shí)際操作,最后提供了必要的依賴添加方法,以確保功能的實(shí)現(xiàn)
    2024-10-10
  • SpringMVC中MultipartFile上傳獲取圖片的寬度和高度詳解

    SpringMVC中MultipartFile上傳獲取圖片的寬度和高度詳解

    本篇文章主要介紹了SpringMVC中MultipartFile上傳獲取圖片的寬度和高度,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 基于Java實(shí)現(xiàn)Socket編程入門

    基于Java實(shí)現(xiàn)Socket編程入門

    Java最初是作為網(wǎng)絡(luò)編程語言出現(xiàn)的,使得客戶端和服務(wù)器的溝通變成了現(xiàn)實(shí),而在網(wǎng)絡(luò)編程中,使用最多的就是Socket,本文就來介紹一下基于Java實(shí)現(xiàn)Socket編程入門,感興趣的可以來了解一下
    2022-03-03
  • 詳解Java信號(hào)量Semaphore的原理及使用

    詳解Java信號(hào)量Semaphore的原理及使用

    Semaphore來自于JDK1.5的JUC包,直譯過來就是信號(hào)量,被作為一種多線程并發(fā)控制工具來使用。本文將詳解其原理與使用方法,感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • 解決springboot 連接 mysql 時(shí)報(bào)錯(cuò) using password: NO的方案

    解決springboot 連接 mysql 時(shí)報(bào)錯(cuò) using password: NO的方案

    在本篇文章里小編給大家整理了關(guān)于解決springboot 連接 mysql 時(shí)報(bào)錯(cuò) using password: NO的方案,有需要的朋友們可以學(xué)習(xí)下。
    2020-01-01
  • Spring Security Oauth2.0 實(shí)現(xiàn)短信驗(yàn)證碼登錄示例

    Spring Security Oauth2.0 實(shí)現(xiàn)短信驗(yàn)證碼登錄示例

    本篇文章主要介紹了Spring Security Oauth2.0 實(shí)現(xiàn)短信驗(yàn)證碼登錄示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評(píng)論