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

Java?C++題解leetcode904水果成籃

 更新時間:2022年10月19日 11:53:45   作者:AnjaVon  
這篇文章主要為大家介紹了Java?C++題解leetcode904水果成籃示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

題目要求

閱讀理解

讀完題的我be like:

去看了遍英文版就懂了,題目中的種類【type】不是種類數(shù)……每個數(shù)字代表一種樹【用個字母啥的表示或者翻譯成類型就好理解多了】,那么目標就是找從哪里開始可以維持兩種數(shù)字(種類)無規(guī)律交替出現(xiàn)的狀態(tài)最久,這個最久是多少棵樹。

思路:滑動窗口

  • 窗口里可放兩棵樹,一棵是棗樹,另一棵還是棗樹。 向后遍歷整排樹,并更新最長狀態(tài)。

Java

數(shù)組

class Solution {
    public int totalFruit(int[] fruits) {
        int res = 0;
        int[] win = new int[fruits.length + 10];
        for (int l = 0, r = 0, tot = 0; r < fruits.length; r++) {
            if (++win[fruits[r]] == 1)
                tot++; // 當前種類統(tǒng)計
            while (tot > 2) {
                if (--win[fruits[l++]] == 0)
                    tot--;
            }
            res = Math.max(res, r - l + 1); // 維護最長狀態(tài)
        }
        return res;
    }
}
  • 時間復雜度:O(n)
  • 空間復雜度:O(n)

哈希表

可使用哈希表構建窗口,降低空間復雜度。

  • 鍵對應籃子,值對應同類樹數(shù)量;
  • 當值為000注意要徹底刪掉鍵。
class Solution {
    public int totalFruit(int[] fruits) {
        Map<Integer, Integer> win = new HashMap<Integer, Integer>();
        int l = 0, res = 0;
        for (int r = 0; r < fruits.length; r++) {
            win.put(fruits[r], win.getOrDefault(fruits[r], 0) + 1);
            while (win.size() > 2) { // 窗口大小即種類數(shù)
                win.put(fruits[l], win.get(fruits[l]) - 1);
                if (win.get(fruits[l]) == 0)
                    win.remove(fruits[l]); // 徹底刪除鍵值
                l++;
            }
            res = Math.max(res, r - l + 1);
        }
        return res;
    }
}
  • 時間復雜度:O(n)
  • 空間復雜度:O(1)

C++

數(shù)組

class Solution {
public:
    int totalFruit(vector<int>& fruits) {
        int res = 0;
        int win[fruits.size() + 10];
        memset(win, 0, sizeof(win));
        for (int l = 0, r = 0, tot = 0; r < fruits.size(); r++) {
            if (++win[fruits[r]] == 1)
                tot++; // 當前種類統(tǒng)計
            while (tot > 2) {
                if (--win[fruits[l++]] == 0)
                    tot--;
            }
            res = max(res, r - l + 1); // 維護最長狀態(tài)
        }
        return res;
    }
};
  • 時間復雜度:O(n)
  • 空間復雜度:O(n)

哈希表

可使用哈希表構建窗口,降低空間復雜度。

class Solution {
public:
    int totalFruit(vector<int>& fruits) {
        unordered_map<int, int> win;
        int l = 0, res = 0;
        for (int r = 0; r < fruits.size(); r++) {
            if (win.count(fruits[r]))
                win[fruits[r]]++;
            else
                win[fruits[r]] = 1;
            while (win.size() > 2) { // 窗口大小即種類數(shù)
                win[fruits[l]]--;
                if (win[fruits[l]] == 0)
                    win.erase(fruits[l]); // 徹底刪除鍵值
                l++;
            }
            res = max(res, r - l + 1);
        }
        return res;
    }
};
  • 時間復雜度:O(n)
  • 空間復雜度:O(1)

總結

  • 今天不想rust了……主體和這兩種語言差不多,要多些類型轉換balabala的內(nèi)容

以上就是Java C++題解leetcode904水果成籃的詳細內(nèi)容,更多關于Java C++題解水果成籃的資料請關注腳本之家其它相關文章!

相關文章

  • Java中MapStruct入門使用及對比

    Java中MapStruct入門使用及對比

    MapStruct是一個Java注解處理器框架,用于簡化Java Bean之間的映射,本文主要介紹了Java中MapStruct入門使用及對比,感興趣的可以了解一下
    2023-12-12
  • Java如何根據(jù)不同系統(tǒng)動態(tài)獲取換行符和盤分割符

    Java如何根據(jù)不同系統(tǒng)動態(tài)獲取換行符和盤分割符

    這篇文章主要介紹了Java如何根據(jù)不同系統(tǒng)動態(tài)獲取換行符和盤分割符,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java多線程關鍵字final和static詳解

    java多線程關鍵字final和static詳解

    這篇文章主要介紹了java多線程關鍵字final和static詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • JAVA實戰(zhàn)練習之圖書管理系統(tǒng)實現(xiàn)流程

    JAVA實戰(zhàn)練習之圖書管理系統(tǒng)實現(xiàn)流程

    隨著網(wǎng)絡技術的高速發(fā)展,計算機應用的普及,利用計算機對圖書館的日常工作進行管理勢在必行,本篇文章手把手帶你用Java實現(xiàn)一個圖書管理系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2021-10-10
  • Java實現(xiàn)url加密處理的方法示例

    Java實現(xiàn)url加密處理的方法示例

    這篇文章主要介紹了Java實現(xiàn)url加密處理的方法,涉及java基于base64、編碼轉換實現(xiàn)加密解密相關操作技巧,需要的朋友可以參考下
    2017-06-06
  • java 交換兩個數(shù)據(jù)的方法實例詳解

    java 交換兩個數(shù)據(jù)的方法實例詳解

    這篇文章主要介紹了java 交換兩個數(shù)據(jù)的方法實例詳解的相關資料,需要的朋友可以參考下
    2016-12-12
  • 32位和64位皆適用的MyEclipse安裝教程

    32位和64位皆適用的MyEclipse安裝教程

    這篇文章主要為大家詳細介紹了32位和64位皆適用的MyEclipse安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • IDEA2023.1.3安裝教程及下載(圖文)

    IDEA2023.1.3安裝教程及下載(圖文)

    最新變化是在IDEA?2023.1中,對新UI做出了大量改進,本文主要介紹了IDEA2023.1.3安裝教程及下載,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • SPRING FRAMEWORK BEAN作用域和生命周期原理解析

    SPRING FRAMEWORK BEAN作用域和生命周期原理解析

    這篇文章主要介紹了SPRING FRAMEWORK BEAN作用域和生命周期原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • 零基礎如何系統(tǒng)的學習Java

    零基礎如何系統(tǒng)的學習Java

    這篇文章主要介紹了零基礎如何系統(tǒng)的學習Java,很多朋友糾結這個問題,教材書不知道從何學起,今天小編給大家分享一篇教程幫助到家梳理這方面的知識
    2020-07-07

最新評論