LeetCode:209. Minimum Size Subarray Sum長度最小的子數組(C語言)

題目描述:
給定一個含有 n 個正整數的數組和一個正整數 s ,找出該數組中滿足其和 ≥ s 的長度最小的連續子數組,並返回其長度。如果不存在符合條件的連續子數組,返回 0。

示例:

輸入: s = 7, nums = [2,3,1,2,4,3]
輸出: 2
解釋: 子數組 [4,3] 是該條件下的長度最小的連續子數組。

進階:

如果你已經完成了O(n) 時間複雜度的解法, 請嘗試 O(n log n) 時間複雜度的解法。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/minimum-size-subarray-sum
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
解答:

int minSubArrayLen(int s, int* nums, int numsSize)
{
    if (0 == numsSize) 
    {
        return 0;
    }

    int i = 0;
    int j = 0;
    int sum = 0;
    //int ans = 0;
    int ans = INT_MAX;

    for (i = 0; i < numsSize; i++) 
    {
        sum = 0;
        for (j = i; j < numsSize; j++) 
        {
            sum += nums[j];
            if (sum >= s) 
            {
                ans = fmin(ans, j - i + 1);
                //ans = j - i + 1;
                break;
            }
        }
    }
    return ans == INT_MAX ? 0 : ans;
    //return ans;
}

運行結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章