1. 程式人生 > 實用技巧 >圖片該如何優化來提高網站效能?

圖片該如何優化來提高網站效能?

一、題目描述

☆☆二、解法

方法1:滑動視窗. 時間複雜度 O(n) 、空間複雜度 O(1)

連續子陣列 ---> 【滑動視窗】

class Solution {
    public int minSubArrayLen(int s, int[] nums) {
        if (nums == null || nums.length == 0) return 0;
        /**
         *  寫法1
         */
        /*
        int l = 0, r = -1; // 定義[l...r]為滑動視窗,初始化為-1表示視窗不包含任何元素
        int res = nums.length + 1; // 這個值是取不到的最大值
        int tempSum = 0;
        while (l < nums.length) {
            if (tempSum >= s) {
                res = Math.min(res, r - l + 1);
                tempSum -= nums[l];
                l ++;
            }else { // tempSum < s
                if (r < nums.length - 1) { // 注意此邊界!
                    r ++;
                    tempSum += nums[r];
                }else {
                    break;
                }
            }
        }
        return res > nums.length ? 0 : res;
        
*/ /** * 寫法2 * 擴張視窗:為了找到一個可行解,找到了就不再擴張 * 收縮視窗:在長度上優化該可行解,直到條件被破壞 * 尋找下一個可行解,然後再優化到不能優化…… */ int l = 0, r = 0; int res = nums.length + 1; int tempSum = 0; while (r < nums.length) { // 主旋律是擴張,找可行解 tempSum += nums[r];
while (tempSum >= s) { // 間歇性收縮,優化可行解,讓視窗長度挑戰最小紀錄 res = Math.min(res, r - l + 1); tempSum -= nums[l]; l ++; } r ++; } return res > nums.length ? 0 : res; } }