当前位置: 首页 > news >正文

【LeetCode】【滑动窗口长度不固定】978 最长湍流子数组

1794.【软件认证】最长的指定瑕疵度的元音子串

这个例题,是滑动窗口中长度不定求最大的题目,在看题之前可以先看一下【leetcode每日一题】【滑动窗口长度不固定】案例。

题目描述

定义:开头和结尾都是元音字母aeiouAEIOU)的字符串为 元音字符串 ,其中混杂的非元音字母数量为其 瑕疵度 。比如:

  • “a” 、 “aa”是元音字符串,其瑕疵度都为0
  • “aiur”不是元音字符串(结尾不是元音字符)
  • “abira”是元音字符串,其瑕疵度为2

给定一个字符串,请找出指定瑕疵度的最长元音字符子串,并输出其长度,如果找不到满足条件的元音字符子串,输出0

子串:字符串中任意个连续的字符组成的子序列称为该字符串的子串。

思路

窗口里的瑕疵度的字母含量只能是k,求最大长度,如果大于k缩小窗口,但是如果<k

,因此我们需要判断一下,符合条件的才去更新长度。

以下是一个实现了上述算法的 JavaScript 示例代码:


const getLongestFlawedVowelSubstrLen = (flaw, input) => {
    let count = 0
    let res = 0
    let left = 0
    let set = new Set(['a','e','i','o','u']);

    for (let i = 0; i < input.length; i++) {
    	// 向右扩大窗口,维护窗口中的瑕疵度
      if (!set.has(input[i].toLowerCase())) {
        count++
      }
      // 缩小窗口
      while (count > flaw) {
          if (!set.has(input[left].toLowerCase())) {
              count--;
          }
          left++;
      }
      // 满足条件的时候,更新结果。
      if(set.has(input[i].toLowerCase())&&set.has(input[left].toLowerCase())&&count===flaw){
        res = Math.max(res, i-left+1)
      }
    }
    return res;
  }

978 最长湍流子数组

给定一个整数数组 arr ,返回 arr 的 最大湍流子数组的长度 。

如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是 湍流子数组 。

在这里插入图片描述


/**
 * @param {number[]} arr
 * @return {number}
 */
var maxTurbulenceSize = function(arr) {
    let simple = [-2];
    for (let i = 1; i < arr.length; i++) {
      if (arr[i] > arr[i - 1]) {
        simple.push(1);
      } else if (arr[i] < arr[i - 1]) {
        simple.push(-1);
      } else {
        simple.push(0);
      }
    }
    let left = 0;
    let max = 1;
    for(let i = 1; i < simple.length; i++){
        if(simple[i] != 0 && simple[i] != simple[i-1]){
            max = Math.max(max, i - left + 1);
        }
        else{
            left++;
            simple[left] = -2;
            i = left;
        }
    }
    return max;

};

相关文章:

  • 合并spark structured streaming处理流式数据产生的小文件
  • 多模态表征—CLIP及中文版Chinese-CLIP:理论讲解、代码微调与论文阅读
  • 使用React和ResizeObserver实现自适应ECharts图表
  • prometheus监控带安全认证的elasticsearch
  • docker创建mongodb数据库容器
  • Aigtek前置微小信号放大器在传感器检测中的应用有哪些
  • STM32—触摸键
  • @ 代码随想录算法训练营第4周(C语言)|Day22(二叉树)
  • 【MySQL】表的操作
  • React18源码: reconcliler启动过程
  • ✅鉴权—cookie、session、token、jwt、单点登录
  • C语言读取用户输入的常用函数
  • django学习网址
  • 【了解机器学习的定义与发展历程】
  • nifi连接Sql server数据库报错TLS问题
  • Redis cluster集群搭建
  • K8S常用kubectl命令汇总(持续更新中)
  • 每日五道java面试题之spring篇(二)
  • sonar-java 手写一个规则-单元测试分析
  • PyPDF2:项目实战源码分享(PDF裁剪)
  • “85后”潘欢欢已任河南中豫融资担保有限公司总经理
  • 第五届全国医院人文管理路演在昆山举办:患者体验才是温度计
  • 当隐身13年的北小京决定公开身份 ,专业戏剧评论依然稀缺
  • 公交公司须关注新出行需求:“单车巴士”能否常态化
  • 俄军方:已完成库尔斯克地区全面控制行动
  • 伊朗港口爆炸事件已致195人受伤