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

[自我記錄]隨想錄刷題第二天 | 977.有序數(shù)組的平方,209.長度最小的子數(shù)組,59.螺旋矩陣II

這篇具有很好參考價值的文章主要介紹了[自我記錄]隨想錄刷題第二天 | 977.有序數(shù)組的平方,209.長度最小的子數(shù)組,59.螺旋矩陣II。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?代碼隨想錄打卡第二天, 新手自我記錄一下刷題歷程, 僅為自我打卡使用.

今天刷了三道主題, 第一道雙指針和第三道模擬做出來了, 第二道寫出了暴力解法但是提交leetcode超時了, 測試用例過了18/20, 看了carl哥答案以后自己重新補寫了滑動窗口方法.


977. 有序數(shù)組的平方

簡單題, 要求時間復雜度O(n), 考慮使用雙指針.

觀察到數(shù)組為有序數(shù)組, 可能有負數(shù).

建立一個與輸入等長的新數(shù)組作為容器, 雙指針分別指向輸入數(shù)組的兩端, 不斷比較指針所指的元素的平方值的大小, 將較大的一端放入新容器并移動指針位置.

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        int left = 0;
        int right = nums.size() - 1;
        vector<int> result(nums);
        for (int i = result.size()-1; i >= 0; --i){
            if (nums[left]*nums[left] >= nums[right]*nums[right]){
                result[i] = nums[left]*nums[left];
                left++;
            }
            else {
                result[i] = nums[right]*nums[right];
                right--;
            }
        }
        return result;
    }
};

209.長度最小的子數(shù)組
?

暴力解法時間復雜度O(n^2), 即對每個可能的起點都找一遍滿足條件的最小子數(shù)組長度.

據(jù)說leetcode更新數(shù)據(jù)以前是能過的.

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int min_len = nums.size() + 1;
        for (int i = 0; i < nums.size(); ++i){
            int sum = 0;
            int len = nums.size() + 1;
            for (int j = i; j < nums.size(); ++j){
                sum += nums[j];
                if (sum >= target){
                    len = j - i + 1;
                    break;
                }
            }
            if (len < min_len){
                min_len = len;
            }
        }
        if (min_len != nums.size() + 1){
            return min_len;
        }
        else{
            return 0;
        }
    }
};

滑窗: 一個for循環(huán), 每個元素進入和退出窗口時各操作一次, 時間復雜度O(2n) = O(n)

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {

        int min_len = nums.size() + 1;
        int sum = 0;
        int sub_len = nums.size() + 1;
        // start i, end j
        int i = 0;

        for (int j = 0; j < nums.size(); ++j){
            sum += nums[j];
            while (sum >= target){
                sub_len = j - i + 1;
                sum -= nums[i];
                i++;
            }
            if (sub_len < min_len){
                min_len = sub_len;
            }
        }

        if (min_len != nums.size() + 1){
            return min_len;
        }
        else {
            return 0;
        }

    }
};

59.螺旋矩陣II

循環(huán)不變量, 寫的時候思路和標準答案稍有一點點區(qū)別, 想的是在每條新邊上走幾步, 代碼看起來比答案亂一點.

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> result(n, vector<int>(n, 0));
        int start_idx = 0;
        int num = 1;
        int count = 0;

        for (int i = n; i > 0; i-=2){
            for (int j = start_idx; j < start_idx + i - 1; ++j){
                result[start_idx][j] = num;
                num++;
            }
            for (int j = start_idx; j < start_idx + i - 1; ++j){
                result[j][i-1+start_idx] = num;
                num++;
            }
            for (int j = start_idx; j < start_idx + i - 1; ++j){
                result[i-1+start_idx][i+2*count-1-j] = num;
                num++;
            }
            for (int j = start_idx; j < start_idx + i - 1; ++j){
                result[i+2*count-1-j][start_idx] = num;
                num++;
            }
            start_idx++;
            count++;
        }

        if (n % 2 == 1){
            result[n/2][n/2] = num;
        }

        return result;
    }
};

另外看leetcode網(wǎng)站大神題解中有一種上下左右移邊界的題解做法感覺更助于理解, 更有美感.


數(shù)組部分的主干題目刷完啦! 撒花!

明天開始鏈表!文章來源地址http://www.zghlxwxcb.cn/news/detail-454801.html

到了這里,關(guān)于[自我記錄]隨想錄刷題第二天 | 977.有序數(shù)組的平方,209.長度最小的子數(shù)組,59.螺旋矩陣II的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 代碼隨想錄刷題第6天|哈希表 LeetCode242、LeetCode349、LeetCode202、LeetCode1

    1、LeetCode242 有效的字母異位詞 題目鏈接:242、有效的字母異位詞 用哈希表,record[s[i]-\\\'a\\\']++,record[t[i]-\\\'a\\\']--,最后判斷record里是否有元素不為0。 2、LeetCode349、兩個數(shù)組的交集 題目鏈接:349、兩個數(shù)組的交集 題目如果沒有限制數(shù)值的大小,就無法使用數(shù)組來做哈希表。如果哈

    2024年02月06日
    瀏覽(24)
  • 代碼隨想錄刷題第48天|LeetCode198打家劫舍、LeetCode213打家劫舍II、LeetCode337打家劫舍III

    代碼隨想錄刷題第48天|LeetCode198打家劫舍、LeetCode213打家劫舍II、LeetCode337打家劫舍III

    1、LeetCode198打家劫舍 題目鏈接:198、打家劫舍 1、dp[i]:考慮下標i(包括i)以內(nèi)的房屋,最多可以偷竊的金額為dp[i] 。 2、遞推公式: 如果偷第i房間,那么dp[i] = dp[i - 2] + nums[i] ; 如果不偷第i房間,那么dp[i] = dp[i - 1]; 然后dp[i]取最大值,即dp[i] = max(dp[i - 2] + nums[i], dp[i - 1

    2024年02月08日
    瀏覽(158)
  • 【代碼隨想錄刷題記錄】 392.判斷子序列 、 115.不同的子序列

    1、題目 給定字符串 s 和 t ,判斷 s 是否為 t 的子序列。 字符串的一個子序列是原始字符串刪除一些(也可以不刪除)字符而不改變剩余字符相對位置形成的新字符串。(例如,\\\"ace\\\"是\\\"abcde\\\"的一個子序列,而\\\"aec\\\"不是)。 題目鏈接:https://leetcode.cn/problems/is-subsequence/ 2、代碼

    2024年02月16日
    瀏覽(19)
  • 【代碼隨想錄刷題記錄】 203.移除鏈表元素 、 707.設(shè)計鏈表 、206.反轉(zhuǎn)鏈表

    題目 給你一個鏈表的頭節(jié)點 head 和一個整數(shù) val ,請你刪除鏈表中所有滿足 Node.val == val 的節(jié)點,并返回 新的頭節(jié)點 。 題目鏈接:https://leetcode.cn/problems/remove-linked-list-elements/ 代碼 小結(jié) 該題主要注意鏈表刪除的操作以及在特殊情況下如何進行操作。特殊情況包括頭結(jié)點為目標

    2024年02月08日
    瀏覽(20)
  • 代碼隨想錄第二十二天

    題目鏈接 : 二叉搜索樹的最近公共祖先 自己的思路 :乍一看和二叉樹的最近公共祖先類似,使用那個題的代碼確實可以寫出來,但是沒有利用到二叉搜索樹的性質(zhì);我們可以找出p和q結(jié)點值的較大者和較小者,遍歷整個二叉樹,如果出現(xiàn)了某個結(jié)點值位于兩者之間,就是我們

    2024年02月16日
    瀏覽(25)
  • 代碼隨想錄Day02:977.有序數(shù)組的平方 ,209.長度最小的子數(shù)組 ,59.螺旋矩陣II

    977.有序數(shù)組的平方 【 題目建議 】: 本題關(guān)鍵在于理解雙指針思想 【隨想錄文章講解】 【卡哥視頻講解】 方法一:暴力排序法 **思路:**先對數(shù)組中每個數(shù)進行平方運算,然后再排序 時間復雜度是 O(n + nlogn) 其中包括計算平方數(shù)組的O(n)和快速排序的O(nlogn),總體上是O(nlo

    2023年04月27日
    瀏覽(26)
  • 代碼隨想錄圖論 第二天 | 695. 島嶼的最大面積 1020. 飛地的數(shù)量

    代碼隨想錄圖論 第二天 | 695. 島嶼的最大面積 1020. 飛地的數(shù)量 一、695. 島嶼的最大面積 題目鏈接:https://leetcode.cn/problems/max-area-of-island/ 思路:典型的遍歷模板題,我采用深度優(yōu)先,每塊島嶼遞歸遍歷的時候計數(shù),遞歸完比較大小記錄最大值。 二、1020. 飛地的數(shù)量 題目鏈接

    2024年02月07日
    瀏覽(20)
  • 代碼隨想錄刷題

    代碼隨想錄刷題

    704. 二分查找 27. 移除元素

    2024年01月25日
    瀏覽(29)
  • 【代碼隨想錄】刷題Day36

    435. 無重疊區(qū)間 先從小到大排序,其實本題依然是求出共同區(qū)域,只不過題目需要我們刪除盡量少的區(qū)間。所以我們需要刪除的一定是范圍跨度大的并且跟其他有公共區(qū)間的區(qū)域。所以每次更新右邊范圍都需要考慮最小的范圍。 1.if(intervals[i][0]end),說明有重復的區(qū)間,那么我

    2024年02月07日
    瀏覽(93)
  • 【代碼隨想錄】刷題Day41

    343. 整數(shù)拆分 1.dp數(shù)組的含義:第i個就表示當前i能被拆分出相乘最大的整數(shù) 2.那么其實,所謂的后續(xù)的i對應(yīng)的相乘最大整數(shù)其實就是前面的相乘最大整數(shù)拼湊而成,為了更好的區(qū)分我們將分離出來的數(shù)為j,那么我們的工作就是將一個又一個的j從i中剝離出,隨后相乘即可。那

    2024年02月07日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包