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

LeetCode977.有序數(shù)組的平方 ,209.長(zhǎng)度最小的子數(shù)組 ,59.螺旋矩陣II

這篇具有很好參考價(jià)值的文章主要介紹了LeetCode977.有序數(shù)組的平方 ,209.長(zhǎng)度最小的子數(shù)組 ,59.螺旋矩陣II。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

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

思路:

? ? ? ? 雙指針應(yīng)用

? ? ? ? 因?yàn)閿?shù)組是有序的,數(shù)組中可能存在負(fù)數(shù),所以其平方的最大值只可能是數(shù)組的頭或尾,因此可以定義兩個(gè)指針,i指向頭,j指向尾。同時(shí)定義一個(gè)新數(shù)組result,讓k指向新數(shù)組的最后一個(gè)元素,當(dāng)nums[i] * nums[i] >= nums[j] * nums[j],result[k] = nums[i] * nums[i],k--,i++;nums[i] * nums[i] < nums[j] * nums[j],result[k] = nums[j] * nums[j],k--,j--。

代碼:

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        vector<int> result(nums.size(), 0);
        int k = nums.size() - 1;
        for(int i = 0, j = nums.size() - 1; i <= j; ){
            if(nums[i] * nums[i] > nums[j] * nums[j]){
                result[k--] = nums[i] * nums[i];
                i++;
            }else{
                result[k--] = nums[j] * nums[j];
                j--;
            }
        }
        return result;
    }
};
//時(shí)間復(fù)雜度:O(n)

?LeetCode209.長(zhǎng)度最小的子數(shù)組

思路:

? ? ? ? 滑動(dòng)窗口? ? ? ?

窗口就是 滿足其和 ≥ s 的長(zhǎng)度最小的 連續(xù) 子數(shù)組。

窗口的起始位置如何移動(dòng):如果當(dāng)前窗口的值大于s了,窗口就要向前移動(dòng)了(也就是該縮小了)。

窗口的結(jié)束位置如何移動(dòng):窗口的結(jié)束位置就是遍歷數(shù)組的指針,也就是for循環(huán)里的索引。

解題的關(guān)鍵在于 窗口的起始位置如何移動(dòng)。

具體分析:https://programmercarl.com/0209.%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.html#%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3

代碼:

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int result = INT32_MAX;
        int Sublength = 0;
        int i = 0;
        int sum = 0;
        for (int j = 0; j < nums.size(); j++){
            sum += nums[j];
            while(sum >= target){
                Sublength = j - i + 1;
                result = result < Sublength ? result : Sublength;
                sum -= nums[i++];
            }
        }
        return result == INT32_MAX ? 0 : result;
    }
};
//時(shí)間復(fù)雜度:O(n)

LeetCode59.螺旋矩陣II

思路:

????????堅(jiān)持了每條邊左閉右開(kāi)的原則。

具體分析見(jiàn):https://programmercarl.com/0059.%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5II.html#%E6%80%9D%E8%B7%AF文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-419812.html

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> res(n, vector<int>(n, 0)); // 使用vector定義一個(gè)二維數(shù)組
        int startx = 0, starty = 0; // 定義每循環(huán)一個(gè)圈的起始位置
        int loop = n / 2; // 每個(gè)圈循環(huán)幾次,例如n為奇數(shù)3,那么loop = 1 只是循環(huán)一圈,矩陣中間的值需要單獨(dú)處理
        int mid = n / 2; // 矩陣中間的位置,例如:n為3, 中間的位置就是(1,1),n為5,中間位置為(2, 2)
        int count = 1; // 用來(lái)給矩陣中每一個(gè)空格賦值
        int offset = 1; // 需要控制每一條邊遍歷的長(zhǎng)度,每次循環(huán)右邊界收縮一位
        int i,j;
        while (loop --) {
            i = startx;
            j = starty;

            // 下面開(kāi)始的四個(gè)for就是模擬轉(zhuǎn)了一圈
            // 模擬填充上行從左到右(左閉右開(kāi))
            for (j = starty; j < n - offset; j++) {
                res[startx][j] = count++;
            }
            // 模擬填充右列從上到下(左閉右開(kāi))
            for (i = startx; i < n - offset; i++) {
                res[i][j] = count++;
            }
            // 模擬填充下行從右到左(左閉右開(kāi))
            for (; j > starty; j--) {
                res[i][j] = count++;
            }
            // 模擬填充左列從下到上(左閉右開(kāi))
            for (; i > startx; i--) {
                res[i][j] = count++;
            }

            // 第二圈開(kāi)始的時(shí)候,起始位置要各自加1, 例如:第一圈起始位置是(0, 0),第二圈起始位置是(1, 1)
            startx++;
            starty++;

            // offset 控制每一圈里每一條邊遍歷的長(zhǎng)度
            offset += 1;
        }

        // 如果n為奇數(shù)的話,需要單獨(dú)給矩陣最中間的位置賦值
        if (n % 2) {
            res[mid][mid] = count;
        }
        return res;
    }
};
//時(shí)間復(fù)雜度:O(n^2)
//空間復(fù)雜度:O(1)

到了這里,關(guān)于LeetCode977.有序數(shù)組的平方 ,209.長(zhǎng)度最小的子數(shù)組 ,59.螺旋矩陣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)文章

  • Day02 977.有序數(shù)組的平方 209.長(zhǎng)度最小的子數(shù)組 59.螺旋矩陣II

    https://leetcode.cn/problems/squares-of-a-sorted-array/ 時(shí)間復(fù)雜度O(n) https://leetcode.cn/problems/minimum-size-subarray-sum/ 時(shí)間復(fù)雜度:O(n) 看每一個(gè)元素被操作的次數(shù),每個(gè)元素在滑動(dòng)窗后進(jìn)來(lái)操作一次,出去操作一次,每個(gè)元素都是被操作兩次,所以時(shí)間復(fù)雜度是 2 × n 也就是O(n)。 空間復(fù)雜度

    2023年04月18日
    瀏覽(17)
  • 代碼隨想錄第二天|977.有序數(shù)組的平方 209.長(zhǎng)度最小的子數(shù)組 59.螺旋矩陣

    代碼隨想錄第二天|977.有序數(shù)組的平方 209.長(zhǎng)度最小的子數(shù)組 59.螺旋矩陣

    第二天開(kāi)始了, 一開(kāi)始自己寫,就只想到了先一個(gè)個(gè)平方,再排序(甚至打算手寫排序循環(huán),后來(lái)才發(fā)現(xiàn)c++有自帶的排序函數(shù)sort(a.begin(),a.end()),c++真好,加油努力學(xué)習(xí)c++。 第二種方法然后看提示用雙指針也完全沒(méi)想出來(lái),只能看文章了,淚 寫完發(fā)現(xiàn)代碼亂七八糟,要改。

    2024年02月13日
    瀏覽(26)
  • 算法訓(xùn)練 Day 2 | 數(shù)組:977.有序數(shù)組的平方,209.長(zhǎng)度最小的子數(shù)組,59.螺旋矩陣II

    977. 有序數(shù)組的平方 第一想法:暴力破解 看完題解想法:朝著雙指針?lè)较蛳?遇到困難: 用雙指針的話,一開(kāi)始想到兩邊指針往中間靠,逐個(gè)將最大值賦給結(jié)果數(shù)組。和題解不同的是,循環(huán)條件我寫了? while (left != right) {...} ,相比于題解的? while (left = right) {...} ,我需要在后

    2023年04月12日
    瀏覽(29)
  • 代碼隨想錄Day02:977.有序數(shù)組的平方 ,209.長(zhǎng)度最小的子數(shù)組 ,59.螺旋矩陣II

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

    2023年04月27日
    瀏覽(26)
  • day2-數(shù)組part02| 977.有序數(shù)組的平方、 209.長(zhǎng)度最小的子數(shù)組、 59.螺旋矩陣II

    數(shù)組平方后的最大值只可能在數(shù)組兩端,不可能在中間 設(shè)置雙指針,比較兩個(gè)指針?biāo)钢档拇笮?,記錄較大值,接著向中間移動(dòng)這個(gè)指針 結(jié)束條件:左右指針相背 暴力一直不過(guò),明天再補(bǔ)一下 不斷的調(diào)節(jié)子序列的起始位置和終止位置,從而得出我們要想的結(jié)果。 思路 子數(shù)

    2024年02月02日
    瀏覽(19)
  • [自我記錄](méi)隨想錄刷題第二天 | 977.有序數(shù)組的平方,209.長(zhǎng)度最小的子數(shù)組,59.螺旋矩陣II

    ?代碼隨想錄打卡第二天, 新手自我記錄一下刷題歷程, 僅為自我打卡使用. 今天刷了三道主題, 第一道雙指針和第三道模擬做出來(lái)了, 第二道寫出了暴力解法但是提交leetcode超時(shí)了, 測(cè)試用例過(guò)了18/20, 看了carl哥答案以后自己重新補(bǔ)寫了滑動(dòng)窗口方法. 977. 有序數(shù)組的平方 簡(jiǎn)單題

    2024年02月05日
    瀏覽(25)
  • 算法訓(xùn)練第二天|977.有序數(shù)組的平方、209.長(zhǎng)度最小的有序數(shù)組、59.螺旋矩陣2

    題目鏈接:力扣 思路:同樣使用雙指針的方法,這樣就可以只遍歷一次原數(shù)組。 可以考慮需要按照一個(gè)順序來(lái)遍歷,那就是從大到小或者從小到大,我選擇的是從大到小。 不難看出,原數(shù)組將每個(gè)數(shù)平方后,呈現(xiàn)從兩邊到中間逐漸減小的規(guī)律。 所以使用一個(gè)指針指向原數(shù)組

    2023年04月22日
    瀏覽(25)
  • Day2:(1)有序數(shù)組的平方(2)長(zhǎng)度最小的子數(shù)(3)Leetcode 59螺旋矩陣II

    (1)解析 Leetcode977 參考文章 參考視頻 (2)思路 一開(kāi)始考慮不采用新建一個(gè)新數(shù)組,在原數(shù)組上實(shí)現(xiàn)有序數(shù)組平方的排序,實(shí)現(xiàn)起來(lái)比較繁瑣,細(xì)節(jié)會(huì)有些小錯(cuò),后來(lái)采用新建數(shù)組的方式: 定義一個(gè)新數(shù)組resVec,和A數(shù)組一樣的大??;讓index指向resVec數(shù)組當(dāng)前可插入元素的位

    2023年04月08日
    瀏覽(33)
  • 有序數(shù)組的平方 長(zhǎng)度最小的子數(shù)組 螺旋矩陣II

    有序數(shù)組的平方 長(zhǎng)度最小的子數(shù)組 螺旋矩陣II

    977. 有序數(shù)組的平方 - 力扣(LeetCode) 給你一個(gè)按 非遞減順序 排序的整數(shù)數(shù)組 nums,返回 每個(gè)數(shù)字的平方 組成的新數(shù)組,要求也按 非遞減順序 排序。 示例 1: 輸入:nums = [-4,-1,0,3,10] 輸出:[0,1,9,16,100] 解釋:平方后,數(shù)組變?yōu)?[16,1,0,9,100],排序后,數(shù)組變?yōu)?[0,1,9,16,100] 示例

    2024年02月12日
    瀏覽(19)
  • 算法-有序數(shù)組的平方,長(zhǎng)度最小的子數(shù)組,螺旋矩陣II

    算法-有序數(shù)組的平方,長(zhǎng)度最小的子數(shù)組,螺旋矩陣II

    偽裝成一個(gè)老手! 題目 給你一個(gè)按 非遞減順序 排序的整數(shù)數(shù)組 nums,返回每個(gè)數(shù)字的平方組成的新數(shù)組,要求也按非遞減順序排序。 示例 : 輸入:nums = [-4,-1,0,3,10] 輸出:[0,1,9,16,100] 解釋:平方后,數(shù)組變?yōu)?[16,1,0,9,100] 排序后,數(shù)組變?yōu)?[0,1,9,16,100] 來(lái)源:力扣977 思路 遍

    2024年02月11日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包