【LeetCode每日一题】2381. 字母移位 II2406. 将区间分为最少组数 (差分数组)

差分数组案例

2381. 字母移位 II

给你一个小写英文字母组成的字符串 s 和一个二维整数数组 shifts ,其中 shifts[i] = [starti, endi, directioni] 。对于每个 i ,将 s 中从下标 starti 到下标 endi (两者都包含)所有字符都进行移位运算,如果 directioni = 1 将字符向后移位,如果 directioni = 0 将字符向前移位。

将一个字符 向后 移位的意思是将这个字符用字母表中 下一个 字母替换(字母表视为环绕的,所以 'z' 变成 'a')。类似的,将一个字符 向前 移位的意思是将这个字符用字母表中 前一个 字母替换(字母表是环绕的,所以 'a' 变成 'z' )。

请你返回对 s 进行所有移位操作以后得到的最终字符串。

思路:

  • 构造一个差分数组记录每个元素需要前进或者后退
  • 记录每个点到97(a ) 的距离,根据距离获得对应的字母。
  • 注意:每个点到97的距离都要小于26. 记录sum为需要前进或后退的距离
    • sum为-4 时 , b - 4 -a = -3 因此 b + sum +26 -97
    • x + 2 根据上面 (b + sum +26 -97)%26
    • a +28 根据上面 sum%= 26,(b + sum +26 -97)%26
var shiftingLetters = function(s, shifts) {let len = s.length;let diff = new Array(len+1).fill(0);for(let i = 0;i<shifts.length;i++){const [start,end,val] = shifts[i];if(val>0){diff[start]++;diff[end+1]--;}else{diff[start]--;diff[end+1]++;}}let sum = 0;let strArr = s.split("");for(let i = 0;i<len;i++){sum+=diff[i];sum = sum%26;strArr[i] = String.fromCharCode((s[i].charCodeAt()+sum-97+26)%26+97);}return strArr.join("");
};

2406. 将区间分为最少组数

给你一个二维整数数组 intervals ,其中 intervals[i] = [lefti, righti] 表示 区间 [lefti, righti]

你需要将 intervals 划分为一个或者多个区间 ,每个区间 属于一个组,且同一个组中任意两个区间 不相交

请你返回 最少 需要划分成多少个组。

如果两个区间覆盖的范围有重叠(即至少有一个公共数字),那么我们称这两个区间是 相交 的。比方说区间 [1, 5][5, 8] 相交。

思路:

  • 求出重叠区间的最大个数,最少划分的组数 = 最大个数。
    • 理由:假如重叠区间最大个数为 m 个,分成 m +1 ,那么就说明新划分出来的组里的区间无法分到现有的m个分组里 ⇒ 与m个组里的线段都有重叠 ⇒ 那么最大重叠数就是 m + 1, 这和重叠区间最大个数为m个相违背。

      /*** @param {number[][]} intervals* @return {number}*/
      var minGroups = function(intervals) {// 求最大重叠数intervals.sort((a, b) => b[1] - a[1])let len = intervals[0][1]let diff = new Array(len+1).fill(0)console.log(diff)for(let i = 0; i < intervals.length; i++){const [left, right] = intervals[i];diff[left-1]++;diff[right]--;}let sum = 0;let res = 0;for(let i = 0; i < diff.length-1; i++){sum += diff[i]res = Math.max(res, sum)}return res;
      };
      

d’d

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/667943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ReactNative实现的横向滑动条

OK&#xff0c;我们先看下效果图 注意使用到了两个库 1.react-native-linear-gradient 2.react-native-gesture-handler ok&#xff0c;我们看下面的代码 import {Image, TouchableWithoutFeedback, StyleSheet, View} from react-native; import LinearGradient from reac…

Linux---信号

前言 到饭点了&#xff0c;我点了一份外卖&#xff0c;然后又开了一把网游&#xff0c;这个时候&#xff0c;我在打游戏的过程中&#xff0c;我始终记得外卖小哥会随时给我打电话&#xff0c;通知我我去取外卖&#xff0c;这个时候游戏还没有结束。我在打游戏的过程中需要把外…

Docker 第十二章 : Docker 三剑客之 Swarm (节点管理命令)

第十二章 : Docker 三剑客之 Swarm (节点管理命令) 本章知识点: 本文介绍了Docker三剑客之Swarm的节点管理与命令。Swarm是Docker集群管理工具,允许用户轻松部署和管理容器化的应用程序。通过节点管理和命令,用户可以配置Swarm集群,包括添加、删除和更新节点,以及执行…

考研中常见的算法-逆置

元素逆置 概述&#xff1a;其实就是将 第一个元素和最后一个元素交换&#xff0c;第二个元素和倒数第二个元素交换&#xff0c;依次到中间位置。用途&#xff1a;可用于数组的移动&#xff0c;字符串反转&#xff0c;链表反转操作&#xff0c;栈和队列反转等操作。 逆置图解 …

<网络安全>《16 网络安全隔离与信息单向导入系统》

1 概念 网络安全隔离与信息单向导入系统解决了从外网向内网、低密级环境向高密级环境单向传输数据的问题。系统利用光单向传输的特性构建了一条安全、单向的传输通道&#xff0c;实现了外网到内网的数据传输&#xff08;低密级到高密级的传输&#xff09;&#xff0c;又能完全…

vulhub中Apache APISIX 默认密钥漏洞复现(CVE-2020-13945)

Apache APISIX是一个高性能API网关。在用户未指定管理员Token或使用了默认配置文件的情况下&#xff0c;Apache APISIX将使用默认的管理员Token edd1c9f034335f136f87ad84b625c8f1&#xff0c;攻击者利用这个Token可以访问到管理员接口&#xff0c;进而通过script参数来插入任意…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Menu组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之Menu组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Menu组件 TextClock组件通过文本将当前系统时间显示在设备上。支持不同时区的时间…

Day42 474一和零 完全背包理论基础 518零钱兑换II

474 一和零 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的大小&#xff0c;该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素&#xff0c;集合 x 是集合 y 的 子集 。 示例 1&#xff1a; 输入&#xff1a;s…

leetcode142 环形链表 II

文章目录 1. 解法&#xff1a;快慢指针2. 原题 [142. 环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/) 1. 解法&#xff1a;快慢指针 定义两个指针fast和slow&#xff0c;同时从链表头出发&#xff0c;fast每次走两步&#xff0c;slow每次走1步&#xff0c…

第一个Linux 的.c 程序?

用vim 编辑器 来写c 1. 打开终端 首先&#xff0c;打开终端。你可以通过按下Ctrl Alt T 组合键或从应用程序菜单中选择终端。 2. 使用vim创建C程序 在终端中&#xff0c;运行以下命令以使用vim创建一个C程序文件。假设我们将文件命名为hello.c&#xff1a; vim hello.c …

深度学习本科课程 实验4 卷积神经网络

二维卷积实验 1.1 任务内容 手写二维卷积的实现&#xff0c;并在至少一个数据集上进行实验&#xff0c;从训练时间、预测精 度、Loss变化等角度分析实验结果&#xff08;最好使用图表展示&#xff09;&#xff08;只用循环几轮即可&#xff09;使用torch.nn实现二维卷积&…

ShardingSphere 5.x 系列【5】Spring Boot 3.1 集成Sharding Sphere-JDBC并实现读写分离

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 概述2. 使用限制3. 案例演示3.…

[Angular 基础] - 数据绑定(databinding)

[Angular 基础] - 数据绑定(databinding) 上篇笔记&#xff0c;关于 Angular 的渲染过程及组件的创建&简单学习&#xff1a;[Angular 基础] - Angular 渲染过程 & 组件的创建 Angular 之中的 databinding 是一个相对而言更加复杂&#xff0c;以及我个人觉得相对而言比…

算法笔记刷题日记——3.简单入门模拟 3.1简单模拟

刷题日记 3.1 简单模拟 此类题型根据题目描述进行代码的编写&#xff0c;考察代码能力&#xff0c;刷题记录如下&#xff1a; B1001 B1032 B1016 B1026 B1046 B1008 B1012 B1018 A1042 A1046 A1065 B1010 A1002 A1009 错题记录 B1008 数组元素循环右移问题 一个数组_A_中存有…

[机缘参悟-145] :一个软件架构师对佛学的理解 -9- 修行的目标和层次:净心、智慧和解脱

目录 前言&#xff1a; 第一层次&#xff08;小乘&#xff09;&#xff1a;净心&#xff0c;摆脱痛苦和烦扰&#xff0c;进入平静和安宁 1.1 什么是净心 1.2 如何达到净心的状态 1.3 "常乐我净" 第二层次&#xff08;中乘&#xff09;&#xff1a;智慧&#xf…

【Spring连载】使用Spring Data访问Redis(十三)----支持类Support Classes

【Spring连载】使用Spring Data访问Redis&#xff08;十三&#xff09;----支持类Support Classes org.springframework.data.redis.support包提供了各种可重复使用的组件&#xff0c;这些组件依赖Redis作为后端存储。目前&#xff0c;该包包含Redis之上的各种基于JDK的接口实现…

SpringMVC精简知识点

SpringMVC 数据格式化基本数据类型和字符串自动转换特殊数据类型和字符串自动转换 验证及国际化应用实例注意事项和使用细节注解的结合使用数据类型转换校验核心类-DatBinder取消某个属性的绑定中文乱码解决处理json和HttpMessageConverter<T>作业布置SpringMVC文件上传自…

day19 初始HTML

什么是HTML HTML&#xff08;Hyper Text Markup Language&#xff09;超文本标记语言 超文本包括&#xff1a;文字、图片、音频、视频、动画等 HTML5&#xff0c;提供了一些新的元素和一些有趣的新特性&#xff0c;同时也建立了一些新的规则。这些元素、特性和规则的建立&…

【Linux】进程间通信 --管道通信

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法…感兴趣就关注我吧&#xff01;你定不会失望。 本篇导航 0. 进程间通信原理1. 匿名管道1.1 通信原理1.2 接口介绍 2. 命名管道2.1 接口介绍 3. 共享内存3.1 通信原理3.2 接口介绍 0. 进…

用户访问一个购物网站时TCP/IP五层参考模型中每一层的功能

当用户访问一个购物网站时&#xff0c;网络上的每一层都会涉及不同的协议&#xff0c;具体网络模型如下图所示。 以下是每个网络层及其相关的协议示例&#xff1a; 物理层&#xff1a;负责将比特流传输到物理媒介上&#xff0c;例如电缆或无线信号。所以在物理层&#xff0c;可…