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

思路:模擬

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;
}
}
- 時間復雜度:O(n)
- 空間復雜度:O(1)
再改進【拜題設限制所賜】
手推一遍上面的執(zhí)行過程發(fā)現(xiàn)最小值沒有什么意義,可以只用最大值衡量,找一個區(qū)間右端點rrr,這個r與arr在[0,r]內(nèi)的最大值相等;
- 從頭開始統(tǒng)計當前向前區(qū)間內(nèi)的最大值,若該值與遍歷下標相等,則塊滿足題設條件,答案加一;
- 然后無需進行歸零,因為后續(xù)的所有值一定都大于當前塊的最大值;
- 重復遍歷與比較。
之所以可以省略最小值的統(tǒng)計,是因為塊的大小由最大值決定,小的值都在前面的塊里被排序,所以一定能在當前塊找到一個與左端點相等的值(最小值);
- 此外,當前統(tǒ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;
}
}
- 時間復雜度:O(n)
- 空間復雜度: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;
}
};
- 時間復雜度:O(n)
- 空間復雜度: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
}
}
- 時間復雜度:O(n)
- 空間復雜度:O(1)
總結(jié)
- 簡單到?jīng)]什么好總結(jié)的……題設的限制極大地降低了題目難度,本來看題還沒有意識到,看到示例就意識到了今天可以擁有簡單題的快樂~
- 看官方的題解管這個再改進方法叫貪心,分析了好長好長……看著就頭疼
- 還有其他解法用棧的,本質(zhì)上思路一樣,是理解比較淺但實現(xiàn)稍復雜的方法。
以上就是Java C++題解leetcode769最多能完成排序的塊的詳細內(nèi)容,更多關于Java C++最多能完成排序的塊的資料請關注腳本之家其它相關文章!
相關文章
SpringBoot中OKHttp和壓縮文件的使用實戰(zhàn)教程
本文介紹了如何在SpringBoot中使用OKHttp發(fā)起請求和處理壓縮文件,包括文件的存儲配置、實體類、配置類和初始化類的設置,以及如何通過主程序和測試類進行實際操作,最后提供了必要的依賴添加方法,以確保功能的實現(xiàn)2024-10-10
SpringMVC中MultipartFile上傳獲取圖片的寬度和高度詳解
本篇文章主要介紹了SpringMVC中MultipartFile上傳獲取圖片的寬度和高度,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
解決springboot 連接 mysql 時報錯 using password: NO的方案
在本篇文章里小編給大家整理了關于解決springboot 連接 mysql 時報錯 using password: NO的方案,有需要的朋友們可以學習下。2020-01-01
Spring Security Oauth2.0 實現(xiàn)短信驗證碼登錄示例
本篇文章主要介紹了Spring Security Oauth2.0 實現(xiàn)短信驗證碼登錄示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01

