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

Leetcode-每日一題【劍指 Offer II 010. 和為 k 的子數(shù)組】

這篇具有很好參考價(jià)值的文章主要介紹了Leetcode-每日一題【劍指 Offer II 010. 和為 k 的子數(shù)組】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

題目

給定一個(gè)整數(shù)數(shù)組和一個(gè)整數(shù)?k ,請(qǐng)找到該數(shù)組中和為?k?的連續(xù)子數(shù)組的個(gè)數(shù)。

示例 1:

輸入:nums = [1,1,1], k = 2
輸出: 2
解釋: 此題 [1,1] 與 [1,1] 為兩種不同的情況


示例 2:

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

提示:

  • 1 <= nums.length <= 2 * 104
  • 1000 <= nums[i] <= 1000
  • 107?<= k <= 107

解題思路

前置知識(shí)

前綴和

前綴和:顧名思義,是要求前綴的總和,什么是前綴,對(duì)于一個(gè)存放數(shù)字的數(shù)組而言,前綴就是指的數(shù)組的前k項(xiàng),因此對(duì)應(yīng)的前綴和就是數(shù)組前k項(xiàng)的和。前綴和一般用來(lái)求數(shù)組中連續(xù)段子數(shù)組的值的和,類似于等差數(shù)列中利用等差數(shù)列的和來(lái)求某一段子數(shù)列的和:Leetcode-每日一題【劍指 Offer II 010. 和為 k 的子數(shù)組】,算法每日一題,leetcode,算法,職場(chǎng)和發(fā)展,java,數(shù)組

?舉個(gè)例子:

我們有一個(gè)數(shù)組nums = [2,4,6,1,4]

Leetcode-每日一題【劍指 Offer II 010. 和為 k 的子數(shù)組】,算法每日一題,leetcode,算法,職場(chǎng)和發(fā)展,java,數(shù)組

下面我們來(lái)計(jì)算nums數(shù)組的前綴和數(shù)組arr,arr[i] = arr[i-1] + nums[i]

第一個(gè)元素由于沒(méi)有前綴所以只能是nums[0],也就是2?

Leetcode-每日一題【劍指 Offer II 010. 和為 k 的子數(shù)組】,算法每日一題,leetcode,算法,職場(chǎng)和發(fā)展,java,數(shù)組?第二個(gè)元素就等于arr[1] = arr[0] + nums[1]

Leetcode-每日一題【劍指 Offer II 010. 和為 k 的子數(shù)組】,算法每日一題,leetcode,算法,職場(chǎng)和發(fā)展,java,數(shù)組?Leetcode-每日一題【劍指 Offer II 010. 和為 k 的子數(shù)組】,算法每日一題,leetcode,算法,職場(chǎng)和發(fā)展,java,數(shù)組

Leetcode-每日一題【劍指 Offer II 010. 和為 k 的子數(shù)組】,算法每日一題,leetcode,算法,職場(chǎng)和發(fā)展,java,數(shù)組?

Leetcode-每日一題【劍指 Offer II 010. 和為 k 的子數(shù)組】,算法每日一題,leetcode,算法,職場(chǎng)和發(fā)展,java,數(shù)組?

?我們得到的nums的前綴和數(shù)組就為 arr = [2,6,12,13,17]

作用:

那么我們得到這個(gè)前綴和數(shù)組到底有什么用呢?

有了前綴和數(shù)組我們就可以方便的計(jì)算出,一個(gè)數(shù)組的區(qū)間之內(nèi)的和,例如我們要求出nums[2]~nums[4] 的和。

nums[2]~nums[4] =nums[2] + nums[3] +nums[4] =? arr[4] - arr[1] = 11

可以直接用前綴和數(shù)組中的兩個(gè)元素求出,不用再進(jìn)行相加操作。這樣可以有效的減少我們的重復(fù)計(jì)算。

代碼為:

    public int[] prefix(int[] nums) {
        int[] prefix = new int[nums.length];
        prefix[0] = nums[0];
        for (int i = 1; i < nums.length; ++i) {
            prefix[i] = prefix[i - 1] + nums[i];
        }
        return prefix;
 
    }

1.題目要求我們找到該數(shù)組中和為?k?的連續(xù)子數(shù)組的個(gè)數(shù),我們可以先計(jì)算出數(shù)組的前綴和。

2.然后我們利用兩個(gè)for循環(huán)遍歷整個(gè)原數(shù)組,枚舉求出各個(gè)區(qū)間的和,若和等于k,則answer加一,注意這里,如果區(qū)間為[0,n]時(shí),也就是左區(qū)間為0時(shí),區(qū)間和[0,n] 就等于?arr[n],這個(gè)情況比較特殊所以我們要單獨(dú)計(jì)算。最后返回answer即可。

代碼實(shí)現(xiàn)

class Solution {
    public int subarraySum(int[] nums, int k) {
        int[] sum = new int[nums.length];
        sum[0] = nums[0];
        for(int i = 1; i < nums.length; i++){
            sum[i] = sum[i-1] + nums[i];
        }
        int answer = 0;
        for(int i = 0; i < nums.length; i++){
            if(sum[i] == k){
                answer++;
            }
            for(int j = i + 1; j < nums.length; j++){
                if(  sum[j] - sum[i] == k){
                    answer ++;
                }
            }
        }

        return answer;
    }
}

測(cè)試結(jié)果

Leetcode-每日一題【劍指 Offer II 010. 和為 k 的子數(shù)組】,算法每日一題,leetcode,算法,職場(chǎng)和發(fā)展,java,數(shù)組

Leetcode-每日一題【劍指 Offer II 010. 和為 k 的子數(shù)組】,算法每日一題,leetcode,算法,職場(chǎng)和發(fā)展,java,數(shù)組?

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-606889.html

到了這里,關(guān)于Leetcode-每日一題【劍指 Offer II 010. 和為 k 的子數(shù)組】的文章就介紹完了。如果您還想了解更多內(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)文章

  • (字符串 ) 劍指 Offer 58 - II. 左旋轉(zhuǎn)字符串 ——【Leetcode每日一題】

    (字符串 ) 劍指 Offer 58 - II. 左旋轉(zhuǎn)字符串 ——【Leetcode每日一題】

    難度:簡(jiǎn)單 字符串的左旋轉(zhuǎn)操作是把字符串前面的若干個(gè)字符轉(zhuǎn)移到字符串的尾部。請(qǐng)定義一個(gè)函數(shù)實(shí)現(xiàn)字符串左旋轉(zhuǎn)操作的功能。比如,輸入字符串\\\"abcdefg\\\"和數(shù)字2,該函數(shù)將返回左旋轉(zhuǎn)兩位得到的結(jié)果\\\"cdefgab\\\"。 示例 1: 輸入: s = “abcdefg”, k = 2 輸出: “cdefgab” 示例 2:

    2024年02月08日
    瀏覽(24)
  • Leetcode 劍指 Offer II 038. 每日溫度

    題目難度: 中等 原題鏈接 今天繼續(xù)更新 Leetcode 的劍指 Offer(專項(xiàng)突擊版)系列, 大家在公眾號(hào) 算法精選 里回復(fù) 劍指offer2 就能看到該系列當(dāng)前連載的所有文章了, 記得關(guān)注哦~ 請(qǐng)根據(jù)每日 氣溫 列表 temperatures ,重新生成一個(gè)列表,要求其對(duì)應(yīng)位置的輸出為:要想觀測(cè)到更高的

    2024年02月14日
    瀏覽(20)
  • Leetcode-每日一題【劍指 Offer 29. 順時(shí)針打印矩陣】

    Leetcode-每日一題【劍指 Offer 29. 順時(shí)針打印矩陣】

    輸入一個(gè)矩陣,按照從外向里以順時(shí)針的順序依次打印出每一個(gè)數(shù)字。 示例 1: 輸入: matrix = [[1,2,3],[4,5,6],[7,8,9]] 輸出: [1,2,3,6,9,8,7,4,5] 示例 2: 輸入: matrix =?[[1,2,3,4],[5,6,7,8],[9,10,11,12]] 輸出: [1,2,3,4,8,12,11,10,9,5,6,7] 限制: 0 = matrix.length = 100 0 = matrix[i].length?= 100 1.題目要求

    2024年02月13日
    瀏覽(28)
  • (鏈表) 劍指 Offer 24. 反轉(zhuǎn)鏈表 ——【Leetcode每日一題】

    (鏈表) 劍指 Offer 24. 反轉(zhuǎn)鏈表 ——【Leetcode每日一題】

    難度:簡(jiǎn)單 定義一個(gè)函數(shù),輸入一個(gè)鏈表的頭節(jié)點(diǎn),反轉(zhuǎn)該鏈表并輸出反轉(zhuǎn)后鏈表的頭節(jié)點(diǎn)。 示例: 輸入 : 1-2-3-4-5-NULL 輸出 : 5-4-3-2-1-NULL 限制 : 0 = 節(jié)點(diǎn)個(gè)數(shù) = 5000 注意:本題與 206. 反轉(zhuǎn)鏈表 相同。 ??思路: 法一:遞歸 可以將本問(wèn)題分解成子問(wèn)題: 1 - (剩余部分的反轉(zhuǎn))

    2024年02月15日
    瀏覽(29)
  • Leetcode-每日一題【劍指 Offer 16. 數(shù)值的整數(shù)次方】

    Leetcode-每日一題【劍指 Offer 16. 數(shù)值的整數(shù)次方】

    實(shí)現(xiàn)?pow(x,?n)?,即計(jì)算 x 的 n 次冪函數(shù)(即,xn)。不得使用庫(kù)函數(shù),同時(shí)不需要考慮大數(shù)問(wèn)題。 示例 1: 輸入: x = 2.00000, n = 10 輸出: 1024.00000 示例 2: 輸入: x = 2.10000, n = 3 輸出: 9.26100 示例 3: 輸入: x = 2.00000, n = -2 輸出: 0.25000 解釋: 2-2 = 1/22 = 1/4 = 0.25 提示: -10

    2024年02月13日
    瀏覽(22)
  • Leetcode-每日一題【劍指 Offer 26. 樹(shù)的子結(jié)構(gòu)】

    Leetcode-每日一題【劍指 Offer 26. 樹(shù)的子結(jié)構(gòu)】

    輸入兩棵二叉樹(shù)A和B,判斷B是不是A的子結(jié)構(gòu)。(約定空樹(shù)不是任意一個(gè)樹(shù)的子結(jié)構(gòu)) B是A的子結(jié)構(gòu), 即 A中有出現(xiàn)和B相同的結(jié)構(gòu)和節(jié)點(diǎn)值。 例如: 給定的樹(shù) A: ? ? ?3 ? ? / ? ?4 ? 5 ? / ?1 ? 2 給定的樹(shù) B: ? ?4? ? / ?1 返回 true,因?yàn)?B 與 A 的一個(gè)子樹(shù)擁有相同的結(jié)構(gòu)和節(jié)點(diǎn)

    2024年02月13日
    瀏覽(23)
  • (字符串 ) 劍指 Offer 05. 替換空格 ——【Leetcode每日一題】

    (字符串 ) 劍指 Offer 05. 替換空格 ——【Leetcode每日一題】

    難度:簡(jiǎn)單 請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù),把字符串 s 中的每個(gè) 空格 替換成 “ %20 ”。 示例 1: 輸入:s = “We are happy.” 輸出:“We%20are%20happy.” 限制 : 0 = s 的長(zhǎng)度 = 10000 ??思路:雙指針?lè)?如果想把這道題目做到 極致 ,就不要只用額外的輔助空間了! 首先擴(kuò)充數(shù)組到每個(gè)空格替換

    2024年02月08日
    瀏覽(30)
  • Leetcode-每日一題【劍指 Offer 27. 二叉樹(shù)的鏡像】

    Leetcode-每日一題【劍指 Offer 27. 二叉樹(shù)的鏡像】

    請(qǐng)完成一個(gè)函數(shù),輸入一個(gè)二叉樹(shù),該函數(shù)輸出它的鏡像。 例如輸入: ? ? ?4 ? ?/ ? ? 2 ? ? 7 ?/ ? / 1 ? 3 6 ? 9 鏡像輸出: ? ? ?4 ? ?/ ? ? 7 ? ? 2 ?/ ? / 9 ? 6 3? ?1 示例 1: 輸入: root = [4,2,7,1,3,6,9] 輸出: [4,7,2,9,6,3,1] 限制: 0 = 節(jié)點(diǎn)個(gè)數(shù) = 1000 1.題目要求我們?cè)O(shè)

    2024年02月13日
    瀏覽(29)
  • Leetcode-每日一題【劍指 Offer 11. 旋轉(zhuǎn)數(shù)組的最小數(shù)字】

    Leetcode-每日一題【劍指 Offer 11. 旋轉(zhuǎn)數(shù)組的最小數(shù)字】

    把一個(gè)數(shù)組最開(kāi)始的若干個(gè)元素搬到數(shù)組的末尾,我們稱之為數(shù)組的旋轉(zhuǎn)。 給你一個(gè)可能存在?重復(fù)?元素值的數(shù)組?numbers?,它原來(lái)是一個(gè)升序排列的數(shù)組,并按上述情形進(jìn)行了一次旋轉(zhuǎn)。請(qǐng)返回旋轉(zhuǎn)數(shù)組的最小元素。例如,數(shù)組?[3,4,5,1,2] 為 [1,2,3,4,5] 的一次旋轉(zhuǎn),該數(shù)組的

    2024年02月14日
    瀏覽(21)
  • Leetcode-每日一題【劍指 Offer 06. 從尾到頭打印鏈表】

    Leetcode-每日一題【劍指 Offer 06. 從尾到頭打印鏈表】

    輸入一個(gè)鏈表的頭節(jié)點(diǎn),從尾到頭反過(guò)來(lái)返回每個(gè)節(jié)點(diǎn)的值(用數(shù)組返回)。 示例 1: 輸入: head = [1,3,2] 輸出: [2,3,1] 限制: 0 = 鏈表長(zhǎng)度 = 10000 1.題目要求我們從尾到頭反過(guò)來(lái)返回每個(gè)節(jié)點(diǎn)的值,這道題我們可以用棧去解決,但是我們還可以采用另一種方法。就是我們可以

    2024年02月13日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包