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

華為od 面試手撕真題【長度最小的子數(shù)組】

這篇具有很好參考價(jià)值的文章主要介紹了華為od 面試手撕真題【長度最小的子數(shù)組】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

給定一個(gè)含有?n?個(gè)正整數(shù)的數(shù)組和一個(gè)正整數(shù) target 。

找出該數(shù)組中滿足其和 ≥ target 的長度最小的 連續(xù)子數(shù)組?[numsl, numsl+1, ..., numsr-1, numsr] ,并返回其長度。如果不存在符合條件的子數(shù)組,返回 0 。

示例 1:

輸入:target = 7, nums = [2,3,1,2,4,3]
輸出:2
解釋:子數(shù)組?[4,3]?是該條件下的長度最小的子數(shù)組。
示例 2:

輸入:target = 4, nums = [1,4,4]
輸出:1
示例 3:

輸入:target = 11, nums = [1,1,1,1,1,1,1,1]
輸出:0

這個(gè)題目是leetcode的原題:209

注意,注意,注意。

????????想不到最優(yōu)解沒關(guān)系,但是你一定要能寫出暴力遍歷的方法。

????????面試官一般就會(huì)在你寫出暴力遍歷的方法之后,問你時(shí)間復(fù)雜度是多少,提示你會(huì)不會(huì)超時(shí)?你就順著面試官的想法逐個(gè)說明白就行,這里能夠直接體現(xiàn)出你的交流能力和理解能力。當(dāng)然,如果你一上來就是前綴和或者把前綴和寫的比較快的話,面試官肯定還會(huì)問你有沒有更優(yōu)的解法,這里就要多加注意面試中的玄學(xué)了,做題不要太快,以免讓面試官覺得出的題正好撞你槍口上了,會(huì)出另外一道題或者讓你給出最優(yōu)的解法

????????這題的正解方法是前綴和。刷機(jī)試題多的話,應(yīng)該對(duì)這個(gè)不陌生。最優(yōu)解法是滑動(dòng)窗口,比較難想到。leetcode上各路大神解法都很全,我就不復(fù)制粘貼了。

雙重循環(huán)暴力:O(n^2)時(shí)間復(fù)雜度

class Solution {
    public int minSubArrayLen(int s, int[] nums) {
        int n = nums.length;
        if (n == 0) {
            return 0;
        }
        int ans = Integer.MAX_VALUE;
        for (int i = 0; i < n; i++) {
            int sum = 0;
            for (int j = i; j < n; j++) {
                sum += nums[j];
                if (sum >= s) {
                    ans = Math.min(ans, j - i + 1);
                    break;
                }
            }
        }
        return ans == Integer.MAX_VALUE ? 0 : ans;
    }
}

前綴和:O(nlogn)時(shí)間復(fù)雜度

class Solution {
    public int minSubArrayLen(int s, int[] nums) {
        int n = nums.length;
        if (n == 0) {
            return 0;
        }
        int ans = Integer.MAX_VALUE;
        int[] sums = new int[n + 1]; 
        // 為了方便計(jì)算,令 size = n + 1 
        // sums[0] = 0 意味著前 0 個(gè)元素的前綴和為 0
        // sums[1] = A[0] 前 1 個(gè)元素的前綴和為 A[0]
        // 以此類推
        for (int i = 1; i <= n; i++) {
            sums[i] = sums[i - 1] + nums[i - 1];
        }
        for (int i = 1; i <= n; i++) {
            int target = s + sums[i - 1];
            int bound = Arrays.binarySearch(sums, target);
            if (bound < 0) {
                bound = -bound - 1;
            }
            if (bound <= n) {
                ans = Math.min(ans, bound - (i - 1));
            }
        }
        return ans == Integer.MAX_VALUE ? 0 : ans;
    }
}

滑動(dòng)窗口:O(n)文章來源地址http://www.zghlxwxcb.cn/news/detail-624253.html

class Solution {
    public int minSubArrayLen(int s, int[] nums) {
        int n = nums.length;
        if (n == 0) {
            return 0;
        }
        int ans = Integer.MAX_VALUE;
        int start = 0, end = 0;
        int sum = 0;
        while (end < n) {
            sum += nums[end];
            while (sum >= s) {
                ans = Math.min(ans, end - start + 1);
                sum -= nums[start];
                start++;
            }
            end++;
        }
        return ans == Integer.MAX_VALUE ? 0 : ans;
    }
}

到了這里,關(guān)于華為od 面試手撕真題【長度最小的子數(shù)組】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?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)載,請(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)文章

  • 華為OD 面試手撕代碼真題【判斷鏈表是否有環(huán)】

    判斷鏈表是否有環(huán) ? ? ? ? 面試官口述題目,要求實(shí)現(xiàn)函數(shù),輸入是一個(gè)頭節(jié)點(diǎn),輸出是一個(gè)bool值。 ? ? ? ? 相當(dāng)經(jīng)典的題目了,感覺面試官要是出這個(gè)題,應(yīng)該是覺的你還不錯(cuò),出個(gè)簡單的做出來就完事兒了。劍指offer或者leetcode上的老題了,但是手撕代碼經(jīng)典的問題還是

    2024年02月10日
    瀏覽(25)
  • 4、長度最小的子數(shù)組

    4、長度最小的子數(shù)組

    ? ? ? ? 找到一個(gè)數(shù)組中,有多少個(gè)連續(xù)元素的和小于某個(gè)值,求出連續(xù)元素的長度的最小值。 ? ? ? ? 其本質(zhì)也是快慢指針,一個(gè)指針指向窗口的起始位置,另一個(gè)指針指向窗口的終止位置。 ? ? 1.定義快慢指針: 2.更新慢指針: 并記錄長度 3.?更新快指針: 4.重復(fù)第二步

    2024年02月14日
    瀏覽(24)
  • 209. 長度最小的子數(shù)組

    給定一個(gè)含有? n ? 個(gè)正整數(shù)的數(shù)組和一個(gè)正整數(shù)? target ?。 找出該數(shù)組中滿足其和 ? ≥ target ? 的長度最小的? 連續(xù)子數(shù)組 ? [numsl, numsl+1, ..., numsr-1, numsr] ?,并返回其長度 。 如果不存在符合條件的子數(shù)組,返回? 0 ?。 示例 1: 示例 2: 示例 3: 提示: 1 = target = 109 1 =

    2024年02月16日
    瀏覽(23)
  • 【LeetCode209】 長度最小的子數(shù)組

    滑動(dòng)窗口型雙指針 給定一個(gè)含有 n 個(gè)正整數(shù)的數(shù)組和一個(gè)正整數(shù) target 。 找出該數(shù)組中滿足其總和大于等于 target 的長度最小的 連續(xù)子數(shù)組 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其長度。如果不存在符合條件的子數(shù)組,返回 0 。 示例 1: 輸入:target = 7, nums = [2,3,1,2,4,3] 輸出

    2024年01月23日
    瀏覽(27)
  • 長度最小的子數(shù)組(Java詳解)

    長度最小的子數(shù)組(Java詳解)

    目錄 題目描述 題解 思路分析 暴力枚舉代碼 滑動(dòng)窗口代碼 給定一個(gè)含有? n ? 個(gè)正整數(shù)的數(shù)組和一個(gè)正整數(shù)? target ?。 找出該數(shù)組中滿足其和 ? ≥ target ? 的長度最小的? 連續(xù)子數(shù)組 ? [numsl, numsl+1, ..., numsr-1, numsr] ?,并返回其長度 。 如果不存在符合條件的子數(shù)組,返回

    2024年02月05日
    瀏覽(25)
  • 【Leetcode】209. 長度最小的子數(shù)組

    【Leetcode】209. 長度最小的子數(shù)組

    給定一個(gè)含有?n?個(gè)正整數(shù)的數(shù)組和一個(gè)正整數(shù)?s ,找出該數(shù)組中滿足其和 ≥ s 的長度最小的 連續(xù) 子數(shù)組,并返回其長度。如果不存在符合條件的子數(shù)組,返回 0。 示例: 輸入:s = 7, nums = [2,3,1,2,4,3] 輸出:2 解釋:子數(shù)組?[4,3]?是該條件下的長度最小的子數(shù)組。 提示:

    2024年02月13日
    瀏覽(26)
  • 【滑動(dòng)窗口】209. 長度最小的子數(shù)組

    【滑動(dòng)窗口】209. 長度最小的子數(shù)組

    滑動(dòng)窗口 設(shè)置前后指針 滑動(dòng)窗口內(nèi)的元素之和總是大于或者等于s 滑動(dòng)窗口的起始位置: 如果窗口的值大于等于s 窗口向前移動(dòng) 窗口結(jié)束位置:for循環(huán)的j

    2024年02月13日
    瀏覽(19)
  • leetcode-209.長度最小的子數(shù)組

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

    代碼

    2024年02月13日
    瀏覽(17)
  • 滑動(dòng)窗口實(shí)例1(長度最小的子數(shù)組)

    滑動(dòng)窗口實(shí)例1(長度最小的子數(shù)組)

    給定一個(gè)含有? n ? 個(gè)正整數(shù)的數(shù)組和一個(gè)正整數(shù)? target ?。 找出該數(shù)組中滿足其和 ? ≥ target ? 的長度最小的? 連續(xù)子數(shù)組 ? [numsl, numsl+1, ..., numsr-1, numsr] ?,并返回其長度 。 如果不存在符合條件的子數(shù)組,返回? 0 ?。 示例 1: 示例 2: 示例 3: 提示: 1 = target = 109 1 =

    2024年02月11日
    瀏覽(18)
  • 「優(yōu)選算法刷題」:長度最小的子數(shù)組

    給定一個(gè)含有? n ? 個(gè)正整數(shù)的數(shù)組和一個(gè)正整數(shù)? target ?。 找出該數(shù)組中滿足其總和大于等于 ? target ? 的長度最小的? 連續(xù)子數(shù)組 ? [numsl, numsl+1, ..., numsr-1, numsr] ?,并返回其長度 。 如果不存在符合條件的子數(shù)組,返回? 0 ?。 示例 1: 示例 2: 示例 3: 這道題也是一道

    2024年01月23日
    瀏覽(29)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包