国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)結(jié)構(gòu)算法leetcode刷題練習(xí)(1)

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)算法leetcode刷題練習(xí)(1)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

給定一個(gè)三角形 triangle ,找出自頂向下的最小路徑和。

每一步只能移動(dòng)到下一行中相鄰的結(jié)點(diǎn)上。相鄰的結(jié)點(diǎn) 在這里指的是 下標(biāo) 與 上一層結(jié)點(diǎn)下標(biāo) 相同或者等于 上一層結(jié)點(diǎn)下標(biāo) + 1 的兩個(gè)結(jié)點(diǎn)。也就是說,如果正位于當(dāng)前行的下標(biāo) i ,那么下一步可以移動(dòng)到下一行的下標(biāo) i 或 i + 1 。

示例 1:

輸入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]
輸出:11
解釋:如下面簡圖所示:
? ?2
? 3 4
?6 5 7
4 1 8 3
自頂向下的最小路徑和為?11(即,2?+?3?+?5?+?1?= 11)。
示例 2:

輸入:triangle = [[-10]]
輸出:-10
?

來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/triangle

動(dòng)態(tài)規(guī)劃解決

  //dp[i][j]表示第i層第j列從上到下的最小和,i和j從0開始
public int minimumTotal(List<List<Integer>> triangle) {
        int[][] dp=new int[triangle.size()][triangle.get(triangle.size()-1).size()];
        dp[0][0]=triangle.get(0).get(0);
        for(int i=1;i<dp.length;i++){
            for(int j=0;j<triangle.get(i).size();j++){
                if(j==0)
                    dp[i][j]=dp[i-1][j]+triangle.get(i).get(j);
                else if(j==i)
                    dp[i][j]=dp[i-1][j-1]+triangle.get(i).get(j);
                else
                    dp[i][j]=Math.min(dp[i-1][j]+triangle.get(i).get(j),dp[i-1][j-1]+triangle.get(i).get(j));
            }
        }
        int min=Integer.MAX_VALUE;
        for(int i=0;i<dp[dp.length-1].length;i++){
            if(dp[dp.length-1][i]<min)
                min=dp[dp.length-1][i];
        }
        return min;
    }

在一個(gè)由 '0' 和 '1' 組成的二維矩陣內(nèi),找到只包含 '1' 的最大正方形,并返回其面積。


輸入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]
輸出:4

來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/maximal-square
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

此題粘貼官方題解

數(shù)據(jù)結(jié)構(gòu)算法leetcode刷題練習(xí)(1)

?代碼省略

131. 分割回文串

難度中等1469收藏分享切換為英文接收動(dòng)態(tài)反饋

給你一個(gè)字符串?s,請你將?s?分割成一些子串,使每個(gè)子串都是?回文串?。返回?s?所有可能的分割方案。

回文串?是正著讀和反著讀都一樣的字符串。

示例 1:

輸入:s = "aab"
輸出:[["a","a","b"],["aa","b"]]

示例 2:

輸入:s = "a"
輸出:[["a"]]

利用回溯算法解決

  public List<List<String>> partition(String s) {
        List<List<String>> lists=new ArrayList<>();
        if(s==null||s.equals(""))
            return lists;
        ArrayList<String> list=new ArrayList<>();
        backtreeing(s,0,list,lists);
        return lists;
    }
    public static void backtreeing(String s,int start,List<String> list,List<List<String>> lists){
        if(start==s.length()){
            lists.add(new ArrayList<>(list));
            return;
        }

        for(int i=start;i<s.length();i++){
            String substring = s.substring(start, i + 1);
            if(huiwen(substring)) {
                StringBuilder stringBuilder = new StringBuilder();
                String s1 = stringBuilder.append(substring).toString();
                list.add(s1);
                backtreeing(s,i+1,list,lists);
                list.remove(list.size()-1);
            }
        }

    }
    public static boolean huiwen(String s){
        StringBuilder stringBuilder=new StringBuilder(s);
        if(s.equals(stringBuilder.reverse().toString()))
            return true;
        else
            return false;
    }

?

395. 至少有 K 個(gè)重復(fù)字符的最長子串

難度中等811收藏分享切換為英文接收動(dòng)態(tài)反饋

給你一個(gè)字符串?s?和一個(gè)整數(shù)?k?,請你找出?s?中的最長子串,?要求該子串中的每一字符出現(xiàn)次數(shù)都不少于?k?。返回這一子串的長度。

示例 1:

輸入:s = "aaabb", k = 3
輸出:3
解釋:最長子串為 "aaa" ,其中 'a' 重復(fù)了 3 次。

示例 2:

輸入:s = "ababbc", k = 2
輸出:5
解釋:最長子串為 "ababb" ,其中 'a' 重復(fù)了 2 次, 'b' 重復(fù)了 3 次。

?此題采用滑動(dòng)窗口未解決問題,故參考題解力扣文章來源地址http://www.zghlxwxcb.cn/news/detail-423105.html

class Solution {
    public int longestSubstring(String s, int k) {
        if (s.length() < k) return 0;
        HashMap<Character, Integer> counter = new HashMap();
        for (int i = 0; i < s.length(); i++) {
            counter.put(s.charAt(i), counter.getOrDefault(s.charAt(i), 0) + 1);
        }
        for (char c : counter.keySet()) {
            if (counter.get(c) < k) {
                int res = 0;
                for (String t : s.split(String.valueOf(c))) {
                    res = Math.max(res, longestSubstring(t, k));
                }
                return res;
            }
        }
        return s.length();
    }
}

作者:fuxuemingzhu
鏈接:https://leetcode.cn/problems/longest-substring-with-at-least-k-repeating-characters/solution/jie-ben-ti-bang-zhu-da-jia-li-jie-di-gui-obla/
來源:力扣(LeetCode)

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)算法leetcode刷題練習(xí)(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode766. 托普利茨矩陣

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode766. 托普利茨矩陣

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題目錄(劍指Offer、LeetCode、ACM)-----主目錄-----持續(xù)更新(進(jìn)不去說明我沒寫完): https://blog.csdn.net/grd_java/article/details/123063846 解題思路 這道題只要換一種理解方式,瞬間就會(huì)變的很簡單。 題目描述是每個(gè)元素左上和右下對角線元素都相同。但是,我們發(fā)

    2024年01月25日
    瀏覽(25)
  • java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode667. 優(yōu)美的排列 II

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode667. 優(yōu)美的排列 II

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題目錄(劍指Offer、LeetCode、ACM)-----主目錄-----持續(xù)更新(進(jìn)不去說明我沒寫完): https://blog.csdn.net/grd_java/article/details/123063846 解題思路 題目要求我們返回一個(gè)數(shù)組長度為n的數(shù)組,必須含有1~n的所有數(shù),并且從左到右,相鄰的元素依次相減,它們的差,必

    2024年01月25日
    瀏覽(25)
  • java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode209. 長度最小的子數(shù)組

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode209. 長度最小的子數(shù)組

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題目錄(劍指Offer、LeetCode、ACM)-----主目錄-----持續(xù)更新(進(jìn)不去說明我沒寫完): https://blog.csdn.net/grd_java/article/details/123063846 解題思路 代碼:時(shí)間復(fù)雜度O(n).空間復(fù)雜度O(1)

    2024年01月21日
    瀏覽(96)
  • java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode96. 不同的二叉搜索樹

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode96. 不同的二叉搜索樹

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題目錄(劍指Offer、LeetCode、ACM)-----主目錄-----持續(xù)更新(進(jìn)不去說明我沒寫完): https://blog.csdn.net/grd_java/article/details/123063846 很多人覺得動(dòng)態(tài)規(guī)劃很難,但它就是固定套路而已。其實(shí)動(dòng)態(tài)規(guī)劃只不過是將多余的步驟,提前放到dp數(shù)組中(就是一個(gè)數(shù)組,只

    2024年01月21日
    瀏覽(30)
  • java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode378. 有序矩陣中第 K 小的元素

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode378. 有序矩陣中第 K 小的元素

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題目錄(劍指Offer、LeetCode、ACM)-----主目錄-----持續(xù)更新(進(jìn)不去說明我沒寫完): https://blog.csdn.net/grd_java/article/details/123063846 解題思路 已知矩陣相對有序,可以用二分搜索,不過和一維數(shù)組排序不同,這是二維的 每一行都遞增,每一列也是遞增,所以每

    2024年01月23日
    瀏覽(25)
  • java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode1091. 二進(jìn)制矩陣中的最短路徑

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode1091. 二進(jìn)制矩陣中的最短路徑

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題目錄(劍指Offer、LeetCode、ACM)-----主目錄-----持續(xù)更新(進(jìn)不去說明我沒寫完): https://blog.csdn.net/grd_java/article/details/123063846 雙分裂蛇:是求二維表中從起點(diǎn)到終點(diǎn)的經(jīng)典思路(也是求無權(quán)圖的最短路徑問題的經(jīng)典解法)。創(chuàng)建兩條分裂蛇,分別從起點(diǎn)和

    2024年04月26日
    瀏覽(97)
  • 【數(shù)據(jù)結(jié)構(gòu)】算法的時(shí)間復(fù)雜度和空間復(fù)雜度(下)(附leetcode練習(xí)題)

    【數(shù)據(jù)結(jié)構(gòu)】算法的時(shí)間復(fù)雜度和空間復(fù)雜度(下)(附leetcode練習(xí)題)

    ??個(gè)人主頁:fighting小澤 ??作者簡介:目前正在學(xué)習(xí)C語言和數(shù)據(jù)結(jié)構(gòu) ??博客專欄:數(shù)據(jù)結(jié)構(gòu) ???歡迎關(guān)注:評論????點(diǎn)贊????留言???? 空間復(fù)雜度也是一個(gè)數(shù)學(xué)表達(dá)式,是對一個(gè)算法在運(yùn)行過程中 臨時(shí)占用的額外的存儲(chǔ)空間大小的量度 。 空間復(fù)雜度不是程序占用

    2023年04月19日
    瀏覽(21)
  • 【數(shù)據(jù)結(jié)構(gòu)】 算法的時(shí)間復(fù)雜度和空間復(fù)雜度 (上)(附leetcode練習(xí)題)

    【數(shù)據(jù)結(jié)構(gòu)】 算法的時(shí)間復(fù)雜度和空間復(fù)雜度 (上)(附leetcode練習(xí)題)

    ??個(gè)人主頁:fighting小澤 ??作者簡介:目前正在學(xué)習(xí)C語言和數(shù)據(jù)結(jié)構(gòu) ??博客專欄:數(shù)據(jù)結(jié)構(gòu) ???歡迎關(guān)注:評論????點(diǎn)贊????留言???? 如何衡量一個(gè)算法的好壞呢?比如對于以下斐波那契數(shù)列: 斐波那契數(shù)列的遞歸實(shí)現(xiàn)方式非常簡潔,但簡潔一定好嗎?那該如何

    2023年04月14日
    瀏覽(26)
  • 【數(shù)據(jù)結(jié)構(gòu)】算法的時(shí)間復(fù)雜度和空間復(fù)雜度 (上)(附leetcode練習(xí)題)

    【數(shù)據(jù)結(jié)構(gòu)】算法的時(shí)間復(fù)雜度和空間復(fù)雜度 (上)(附leetcode練習(xí)題)

    ??個(gè)人主頁:fighting小澤 ??作者簡介:目前正在學(xué)習(xí)C語言和數(shù)據(jù)結(jié)構(gòu) ??博客專欄:數(shù)據(jù)結(jié)構(gòu) ???歡迎關(guān)注:評論????點(diǎn)贊????留言???? 如何衡量一個(gè)算法的好壞呢?比如對于以下斐波那契數(shù)列: 斐波那契數(shù)列的遞歸實(shí)現(xiàn)方式非常簡潔,但簡潔一定好嗎?那該如何

    2023年04月22日
    瀏覽(22)
  • 趣說數(shù)據(jù)結(jié)構(gòu)(練習(xí)2) —— 順序表/鏈表力扣刷題(中等難度)

    趣說數(shù)據(jù)結(jié)構(gòu)(練習(xí)2) —— 順序表/鏈表力扣刷題(中等難度)

    力扣原題:https://leetcode.cn/problems/reverse-linked-list-ii/ 題目描述 給你單鏈表的頭指針 head 和兩個(gè)整數(shù) left 和 right ,其中 left = right 。請你反轉(zhuǎn)從位置 left 到位置 right 的鏈表節(jié)點(diǎn),返回 反轉(zhuǎn)后的鏈表 。 示例 1 輸入:head = [1,2,3,4,5], left = 2, right = 4 輸出:[1,4,3,2,5] 示例 2 輸入:h

    2024年02月01日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包