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

算法學(xué)習(xí)——LeetCode力扣補(bǔ)充篇11(64. 最小路徑和、48. 旋轉(zhuǎn)圖像 、169. 多數(shù)元素、394. 字符串解碼、240. 搜索二維矩陣 II )

這篇具有很好參考價(jià)值的文章主要介紹了算法學(xué)習(xí)——LeetCode力扣補(bǔ)充篇11(64. 最小路徑和、48. 旋轉(zhuǎn)圖像 、169. 多數(shù)元素、394. 字符串解碼、240. 搜索二維矩陣 II )。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

算法學(xué)習(xí)——LeetCode力扣補(bǔ)充篇11

算法學(xué)習(xí)——LeetCode力扣補(bǔ)充篇11(64. 最小路徑和、48. 旋轉(zhuǎn)圖像 、169. 多數(shù)元素、394. 字符串解碼、240. 搜索二維矩陣 II ),LeetCode算法學(xué)習(xí),算法,學(xué)習(xí),leetcode,c++,c

64. 最小路徑和

64. 最小路徑和 - 力扣(LeetCode)

描述

給定一個(gè)包含非負(fù)整數(shù)的 m x n 網(wǎng)格 grid ,請(qǐng)找出一條從左上角到右下角的路徑,使得路徑上的數(shù)字總和為最小。

說(shuō)明:每次只能向下或者向右移動(dòng)一步。

示例

示例 1:
算法學(xué)習(xí)——LeetCode力扣補(bǔ)充篇11(64. 最小路徑和、48. 旋轉(zhuǎn)圖像 、169. 多數(shù)元素、394. 字符串解碼、240. 搜索二維矩陣 II ),LeetCode算法學(xué)習(xí),算法,學(xué)習(xí),leetcode,c++,c

輸入:grid = [[1,3,1],[1,5,1],[4,2,1]]
輸出:7
解釋:因?yàn)槁窂?1→3→1→1→1 的總和最小。

示例 2:

輸入:grid = [[1,2,3],[4,5,6]]
輸出:12

提示

m == grid.length
n == grid[i].length
1 <= m, n <= 200
0 <= grid[i][j] <= 200

代碼解析

class Solution {
public:
    int minPathSum(vector<vector<int>>& grid) {
        int m = grid.size() , n = grid[0].size();
        vector<vector<int>> dp(m , vector<int>(n , 0) );
        
        dp[0][0] = grid[0][0];
        for(int i=1 ; i<m ;i++)
            dp[i][0] = dp[i-1][0] +  grid[i][0];
        
        for(int j=1 ; j<n ;j++)
            dp[0][j] =  dp[0][j-1]  +  grid[0][j];

        for(int i=1 ; i<m ;i++)
        {
            for(int j=1 ; j<n ; j++)
            {
                dp[i][j] = min( dp[i-1][j], dp[i][j-1] ) + grid[i][j];
            }
        }

        return dp[m-1][n-1];
        
    }
};

48. 旋轉(zhuǎn)圖像

48. 旋轉(zhuǎn)圖像 - 力扣(LeetCode)

描述

給定一個(gè) n × n 的二維矩陣 matrix 表示一個(gè)圖像。請(qǐng)你將圖像順時(shí)針旋轉(zhuǎn) 90 度。

你必須在 原地 旋轉(zhuǎn)圖像,這意味著你需要直接修改輸入的二維矩陣。請(qǐng)不要 使用另一個(gè)矩陣來(lái)旋轉(zhuǎn)圖像。

示例

示例 1:

算法學(xué)習(xí)——LeetCode力扣補(bǔ)充篇11(64. 最小路徑和、48. 旋轉(zhuǎn)圖像 、169. 多數(shù)元素、394. 字符串解碼、240. 搜索二維矩陣 II ),LeetCode算法學(xué)習(xí),算法,學(xué)習(xí),leetcode,c++,c

輸入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
輸出:[[7,4,1],[8,5,2],[9,6,3]]

示例 2:
算法學(xué)習(xí)——LeetCode力扣補(bǔ)充篇11(64. 最小路徑和、48. 旋轉(zhuǎn)圖像 、169. 多數(shù)元素、394. 字符串解碼、240. 搜索二維矩陣 II ),LeetCode算法學(xué)習(xí),算法,學(xué)習(xí),leetcode,c++,c

輸入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
輸出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]

提示

n == matrix.length == matrix[i].length
1 <= n <= 20
-1000 <= matrix[i][j] <= 1000

代碼解析

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int m = matrix.size();
        int n = matrix[0].size();
        for(int i=0 ; i<m ; i++)
        {
            for(int j=i ; j<n ; j++)
            {
                swap(matrix[i][j] , matrix[j][i]);
            }
        }

        for(int i=0 ; i<m ; i++)
        {
            for(int j=0 ; j<n/2 ; j++)
            {
                swap(matrix[i][j] , matrix[i][n-j-1]);
            }
        }

    }
};

169. 多數(shù)元素

169. 多數(shù)元素 - 力扣(LeetCode)

描述

給定一個(gè)大小為 n 的數(shù)組 nums ,返回其中的多數(shù)元素。多數(shù)元素是指在數(shù)組中出現(xiàn)次數(shù) 大于 ? n/2 ? 的元素。

你可以假設(shè)數(shù)組是非空的,并且給定的數(shù)組總是存在多數(shù)元素。

示例

示例 1:

輸入:nums = [3,2,3]
輸出:3

示例 2:

輸入:nums = [2,2,1,1,1,2,2]
輸出:2

提示

n == nums.length
1 <= n <= 5 * 104
-109 <= nums[i] <= 109

進(jìn)階:嘗試設(shè)計(jì)時(shí)間復(fù)雜度為 O(n)、空間復(fù)雜度為 O(1) 的算法解決此問題。

代碼解析

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        map<int,int> my_map;
        pair<int,int> result(0,0);
        for(int i=0 ; i<nums.size() ; i++)
        {
            my_map[nums[i]]++;
            if(my_map[nums[i]] >= nums.size()/2)
            {
                if(my_map[nums[i]] > result.second)
                {
                    result.first = nums[i];
                    result.second = my_map[nums[i]];
                }
            }
        }
        return result.first;
    }
};

394. 字符串解碼

394. 字符串解碼 - 力扣(LeetCode)

描述

給定一個(gè)經(jīng)過編碼的字符串,返回它解碼后的字符串。

編碼規(guī)則為: k[encoded_string],表示其中方括號(hào)內(nèi)部的 encoded_string 正好重復(fù) k 次。注意 k 保證為正整數(shù)。

你可以認(rèn)為輸入字符串總是有效的;輸入字符串中沒有額外的空格,且輸入的方括號(hào)總是符合格式要求的。

此外,你可以認(rèn)為原始數(shù)據(jù)不包含數(shù)字,所有的數(shù)字只表示重復(fù)的次數(shù) k ,例如不會(huì)出現(xiàn)像 3a 或 2[4] 的輸入。

示例

示例 1:

輸入:s = “3[a]2[bc]”
輸出:“aaabcbc”

示例 2:

輸入:s = “3[a2[c]]”
輸出:“accaccacc”

示例 3:

輸入:s = “2[abc]3[cd]ef”
輸出:“abcabccdcdcdef”

示例 4:

輸入:s = “abc3[cd]xyz”
輸出:“abccdcdcdxyz”

提示

1 <= s.length <= 30
s 由小寫英文字母、數(shù)字和方括號(hào) ‘[]’ 組成
s 保證是一個(gè) 有效 的輸入。
s 中所有整數(shù)的取值范圍為 [1, 300]

代碼解析

class Solution {
public:
    string decodeString(string s) {
        string res;
        stack <int> nums;
        stack <string> strs;
        int num = 0;
   
        for(int i = 0; i < s.size(); i++)
        {
            if(s[i] >= '0' && s[i] <= '9')
            {
                num = num * 10 + s[i] - '0';
            }
            else if(s[i] >= 'a' && s[i] <= 'z')
            {
                res += s[i];
            }
            else if(s[i] == '[') //將‘[’前的數(shù)字壓入nums棧內(nèi), 字母字符串壓入strs棧內(nèi)
            {
                nums.push(num);
                num = 0;
                strs.push(res); 
                res.clear();
            }
            else //遇到‘]’時(shí),操作與之相配的‘[’之間的字符,使用分配律
            {
                int times = nums.top();
                nums.pop();
                for(int j = 0; j < times; ++ j)
                    strs.top() += res;
                res = strs.top(); //之后若還是字母,就會(huì)直接加到res之后,因?yàn)樗鼈兪峭患?jí)的運(yùn)算
                                  //若是左括號(hào),res會(huì)被壓入strs棧,作為上一層的運(yùn)算
                strs.pop();
            }
        }
        return res;
    }
};

240. 搜索二維矩陣 II

240. 搜索二維矩陣 II - 力扣(LeetCode)

描述

編寫一個(gè)高效的算法來(lái)搜索 m x n 矩陣 matrix 中的一個(gè)目標(biāo)值 target 。該矩陣具有以下特性:

每行的元素從左到右升序排列。
每列的元素從上到下升序排列。

示例

示例 1:
算法學(xué)習(xí)——LeetCode力扣補(bǔ)充篇11(64. 最小路徑和、48. 旋轉(zhuǎn)圖像 、169. 多數(shù)元素、394. 字符串解碼、240. 搜索二維矩陣 II ),LeetCode算法學(xué)習(xí),算法,學(xué)習(xí),leetcode,c++,c

輸入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
輸出:true

示例 2:
算法學(xué)習(xí)——LeetCode力扣補(bǔ)充篇11(64. 最小路徑和、48. 旋轉(zhuǎn)圖像 、169. 多數(shù)元素、394. 字符串解碼、240. 搜索二維矩陣 II ),LeetCode算法學(xué)習(xí),算法,學(xué)習(xí),leetcode,c++,c

輸入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20
輸出:false

提示

m == matrix.length
n == matrix[i].length
1 <= n, m <= 300
-109 <= matrix[i][j] <= 109
每行的所有元素從左到右升序排列
每列的所有元素從上到下升序排列
-109 <= target <= 109文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-856329.html

代碼解析

常規(guī)
class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int m = matrix.size() , n = matrix[0].size();
        int max_point = 1;

        for(int i=0 ; i<min(m,n) ;i++)
        {
            if(matrix[i][i] > target) break;
            max_point = i;
        }

        for(int i=0 ; i < max_point ; i++)
        {
            for(int j=max_point ; j<n ; j++)
            {
               if(matrix[i][j] == target) return true;
            }
        }

        for(int i=max_point ; i<m ; i++)
        {
            for(int j=0 ; j<n ; j++)
            {
               if(matrix[i][j] == target) return true;
            }
        }

        return false;
    }
};
路徑優(yōu)化
class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int m = matrix.size() , n = matrix[0].size();
        int x = 0 , y = n-1;
     
        while( x < m && y >= 0)
        {
            // cout<<matrix[x][y]<<endl;
            if(matrix[x][y] == target) return true;
            else if(matrix[x][y] > target) y--;
            else if(matrix[x][y] < target) x++;
        }

        return false;
    }
};

到了這里,關(guān)于算法學(xué)習(xí)——LeetCode力扣補(bǔ)充篇11(64. 最小路徑和、48. 旋轉(zhuǎn)圖像 、169. 多數(shù)元素、394. 字符串解碼、240. 搜索二維矩陣 II )的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【LeetCode】64.最小路徑和

    【LeetCode】64.最小路徑和

    給定一個(gè)包含非負(fù)整數(shù)的? m ?x? n ?網(wǎng)格? grid ?,請(qǐng)找出一條從左上角到右下角的路徑,使得路徑上的數(shù)字總和為最小。 說(shuō)明: 每次只能向下或者向右移動(dòng)一步。 示例 1: 示例 2: 提示: m == grid.length n == grid[i].length 1 = m, n = 200 0 = grid[i][j] = 200 又是一道動(dòng)態(tài)規(guī)劃,這次也是

    2024年02月15日
    瀏覽(18)
  • 【LeetCode:64. 最小路徑和 | 暴力遞歸=>記憶化搜索=>動(dòng)態(tài)規(guī)劃 】

    【LeetCode:64. 最小路徑和 | 暴力遞歸=>記憶化搜索=>動(dòng)態(tài)規(guī)劃 】

    ?? 算法題 ?? ?? 算法刷題專欄 | 面試必備算法 | 面試高頻算法 ?? ?? 越難的東西,越要努力堅(jiān)持,因?yàn)樗哂泻芨叩膬r(jià)值,算法就是這樣? ?? 作者簡(jiǎn)介:碩風(fēng)和煒,CSDN-Java領(lǐng)域新星創(chuàng)作者??,保研|國(guó)家獎(jiǎng)學(xué)金|高中學(xué)習(xí)JAVA|大學(xué)完善JAVA開發(fā)技術(shù)棧|面試刷題|面經(jīng)八股文

    2024年02月05日
    瀏覽(22)
  • Java 動(dòng)態(tài)規(guī)劃 64. 最小路徑和

    Java 動(dòng)態(tài)規(guī)劃 64. 最小路徑和

    ? 代碼展示: ?dp[i][j]=Math.min(dp[i-1][j],dp[i][j-1])+grid[i-1][j-1]; ?該題可以通過動(dòng)態(tài)規(guī)劃解決,動(dòng)態(tài)規(guī)劃的題根據(jù)以下的5大步驟便可輕松解決 ? ? ? ? 1.狀態(tài)表示 ? ? ? ? ? ? ? ? 題目要求我們計(jì)算從起點(diǎn)到最后一個(gè)位置的最小路徑和,我們可以創(chuàng)建一個(gè)dp表,dp【i】【j】表示從

    2024年02月13日
    瀏覽(20)
  • 算法學(xué)習(xí)——LeetCode力扣回溯篇2

    算法學(xué)習(xí)——LeetCode力扣回溯篇2

    40. 組合總和 II - 力扣(LeetCode) 描述 給定一個(gè)候選人編號(hào)的集合 candidates 和一個(gè)目標(biāo)數(shù) target ,找出 candidates 中所有可以使數(shù)字和為 target 的組合。 candidates 中的每個(gè)數(shù)字在每個(gè)組合中只能使用 一次 。 注意:解集不能包含重復(fù)的組合。 示例 示例 1: 輸入: candidates = [10,1,2,7

    2024年02月20日
    瀏覽(21)
  • 算法學(xué)習(xí)——LeetCode力扣字符串篇

    算法學(xué)習(xí)——LeetCode力扣字符串篇

    344. 反轉(zhuǎn)字符串 - 力扣(LeetCode) 描述 編寫一個(gè)函數(shù),其作用是將輸入的字符串反轉(zhuǎn)過來(lái)。輸入字符串以字符數(shù)組 s 的形式給出。 不要給另外的數(shù)組分配額外的空間,你必須原地修改輸入數(shù)組、使用 O(1) 的額外空間解決這一問題。 示例 示例 1: 輸入:s = [“h”,“e”,“l(fā)”

    2024年02月20日
    瀏覽(21)
  • 力扣120. 三角形最小路徑和(Java 動(dòng)態(tài)規(guī)劃)

    力扣120. 三角形最小路徑和(Java 動(dòng)態(tài)規(guī)劃)

    Problem: 120. 三角形最小路徑和 Problem:64. 最小路徑和 本題目可以看作是在上述題目的基礎(chǔ)上改編而來(lái),具體的思路: 1.記錄一個(gè)int類型的大小的 n 乘 n n乘n n 乘 n 的數(shù)組(其中 n n n 為數(shù)組triangle的行數(shù))用于記錄 每一個(gè)當(dāng)前階段的最小路徑和 2.大體上可以依據(jù)題意得出動(dòng)態(tài)轉(zhuǎn)移

    2024年01月22日
    瀏覽(19)
  • 【LeetCode】最小路徑和

    【LeetCode】最小路徑和

    鏈接: 最小路徑和 題目描述 算法流程 編程代碼

    2024年02月14日
    瀏覽(22)
  • Leetcode.1631 最小體力消耗路徑

    Leetcode.1631 最小體力消耗路徑

    Leetcode.1631 最小體力消耗路徑 Rating : 1948 你準(zhǔn)備參加一場(chǎng)遠(yuǎn)足活動(dòng)。給你一個(gè)二維 rows x columns 的地圖 heights ,其中 heights[row][col] 表示格子 ( r o w , c o l ) (row, col) ( ro w , co l ) 的高度。一開始你在最左上角的格子 ( 0 , 0 ) (0, 0) ( 0 , 0 ) ,且你希望去最右下角的格子 ( r o w s ? 1

    2023年04月14日
    瀏覽(13)
  • Leetcode刷題詳解——下降路徑最小和

    Leetcode刷題詳解——下降路徑最小和

    給你一個(gè) n x n 的 方形 整數(shù)數(shù)組 matrix ,請(qǐng)你找出并返回通過 matrix 的 下降路徑 的 最小和 。 下降路徑 可以從第一行中的任何元素開始,并從每一行中選擇一個(gè)元素。在下一行選擇的元素和當(dāng)前行所選元素最多相隔一列(即位于正下方或者沿對(duì)角線向左或者向右的第一個(gè)元素

    2024年02月08日
    瀏覽(24)
  • 力扣(leetcode)第599題兩個(gè)列表的最小索引總和(Python)

    題目鏈接:599.兩個(gè)列表的最小索引總和 假設(shè) Andy 和 Doris 想在晚餐時(shí)選擇一家餐廳,并且他們都有一個(gè)表示最喜愛餐廳的列表,每個(gè)餐廳的名字用字符串表示。 你需要幫助他們用最少的索引和找出他們共同喜愛的餐廳。 如果答案不止一個(gè),則輸出所有答案并且不考慮順序。

    2024年01月23日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包