做甜品台的网站,公司官网如何搭建,做博客网站赚钱吗,台州网站建设方案服务1. 题目链接 2. 分析
最多可以将K个值从0变成1,因此滑动窗口的限制条件: 0的数量(zeros)小于K,算法过程如下
有一个滑动窗口(slipper),每次都会从A中读入一个数当读入的数为0时,zeros当zeros的数量大于K时,会取出slipper首部的元素,当取值为0时zeros-- 总体代码如下:
var lo…1. 题目链接 2. 分析
最多可以将K个值从0变成1,因此滑动窗口的限制条件: 0的数量(zeros)小于K,算法过程如下
有一个滑动窗口(slipper),每次都会从A中读入一个数当读入的数为0时,zeros当zeros的数量大于K时,会取出slipper首部的元素,当取值为0时zeros-- 总体代码如下:
var longestOnes function (A, K) {let slipper [];let len A.length;let res 0;let zeros 0;for (let right 0; right len; right) {slipper.push(A[right]);if (A[right] 0) {zeros;}while (zeros K) {if (slipper.shift() 0) {zeros--;}}res Math.max(res, slipper.length);}return res;
};3. 改进
上述算法效率并不高:
数值没有必要每次入栈,只需要使用left、right来界定范围即可 使用left和right来界定滑动窗口中的值 改进后的算法如下: var longestOnes function (A, K) {let len A.length;let res 0;let zeros 0;let left 0;for (let right 0; right len; right) {if (A[right] 0) {zeros;}while (zeros K) {if (A[left] 0) {zeros--;}}res Math.max(res, right - left 1);}return res;
};效率大大提高.