LeetCode day28

news/2024/5/20 8:06:16 标签: leetcode, 算法, 滑动窗口

LeetCode day28

由于一点小意外,今天就来搞搞滑动窗口(ง •_•)ง


1423. 可获得的最大点数

几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。

每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。

你的点数就是你拿到手中的所有卡牌的点数之和。

给你一个整数数组 cardPoints 和整数 k,请你返回可以获得的最大点数。

示例 1:

输入:cardPoints = [1,2,3,4,5,6,1], k = 3
输出:12
解释:第一次行动,不管拿哪张牌,你的点数总是 1 。但是,先拿最右边的卡牌将会最大化你的可获得点数。最优策略是拿右边的三张牌,最终点数为 1 + 6 + 5 = 12 。

示例 2:

输入:cardPoints = [2,2,2], k = 2
输出:4
解释:无论你拿起哪两张卡牌,可获得的点数总是 4 。

示例 3:

输入:cardPoints = [9,7,7,9,7,7,9], k = 7
输出:55
解释:你必须拿起所有卡牌,可以获得的点数为所有卡牌的点数之和。

示例 4:

输入:cardPoints = [1,1000,1], k = 1
输出:1
解释:你无法拿到中间那张卡牌,所以可以获得的最大点数为 1 。 

示例 5:

输入:cardPoints = [1,79,80,1,1,1,200,1], k = 3
输出:202
class Solution {
    public int maxScore(int[] cardPoints, int k) {
        int len=cardPoints.length;
        int sum=0;
        int max=0;
        for(int i=0;i<k;i++){
            sum+=cardPoints[i];
        }
        max=sum;
        for(int i=0;i<k;i++){
            sum=sum-cardPoints[k-i-1]+cardPoints[len-i-1];
            max=max>sum?max:sum;
        }
        return max;
    }
}
    

嘛,被坑了,本来是看有个dai佬发了一堆题号,结果发现不是力扣的,但是都已经搜了,又不是困难题,那自然是得啃。


2379. 得到 K 个黑块的最少涂色次数

给你一个长度为 n 下标从 0 开始的字符串 blocksblocks[i] 要么是 'W' 要么是 'B' ,表示第 i 块的颜色。字符 'W''B' 分别表示白色和黑色。

给你一个整数 k ,表示想要 连续 黑色块的数目。

每一次操作中,你可以选择一个白色块将它 涂成 黑色块。

请你返回至少出现 一次 连续 k 个黑色块的 最少 操作次数。

示例 1:

输入:blocks = "WBBWWBBWBW", k = 7
输出:3
解释:
一种得到 7 个连续黑色块的方法是把第 0 ,3 和 4 个块涂成黑色。
得到 blocks = "BBBBBBBWBW" 。
可以证明无法用少于 3 次操作得到 7 个连续的黑块。
所以我们返回 3 。

示例 2:

输入:blocks = "WBWBBBW", k = 2
输出:0
解释:
不需要任何操作,因为已经有 2 个连续的黑块。
所以我们返回 0 。
class Solution {
    public int minimumRecolors(String blocks, int k) {
        if(blocks.length()==1){
            return blocks.charAt(0)=='B'?0:1;
        }
        int ans=0;
        int max=0;
        int len=blocks.length();
        for(int i=0;i<k;i++){
            if(blocks.charAt(i)=='B'){
                ans++;
            }
        }
        max=ans;
        for(int i=1;i<=len-k;i++){
            if(blocks.charAt(i-1)=='B')
            ans--;
            if(blocks.charAt(i-1+k)=='B')
            ans++;
            max=Math.max(max,ans);
        }
        return k-max;
    }
}

1984. 学生分数的最小差值

给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数。另给你一个整数 k

从数组中选出任意 k 名学生的分数,使这 k 个分数间 最高分最低分差值 达到 最小化

返回可能的 最小差值

示例 1:

输入:nums = [90], k = 1
输出:0
解释:选出 1 名学生的分数,仅有 1 种方法:
- [90] 最高分和最低分之间的差值是 90 - 90 = 0
可能的最小差值是 0

示例 2:

输入:nums = [9,4,1,7], k = 2
输出:2
解释:选出 2 名学生的分数,有 6 种方法:
- [9,4,1,7] 最高分和最低分之间的差值是 9 - 4 = 5
- [9,4,1,7] 最高分和最低分之间的差值是 9 - 1 = 8
- [9,4,1,7] 最高分和最低分之间的差值是 9 - 7 = 2
- [9,4,1,7] 最高分和最低分之间的差值是 4 - 1 = 3
- [9,4,1,7] 最高分和最低分之间的差值是 7 - 4 = 3
- [9,4,1,7] 最高分和最低分之间的差值是 7 - 1 = 6
可能的最小差值是 2

class Solution {
    public int minimumDifference(int[] nums, int k) {
        if(nums.length==1){
            return 0;
        }
        Arrays.sort(nums);
        int min=Integer.MAX_VALUE;
        for(int l=0,r=k-1;r<nums.length;){
            min=Math.min(min,(nums[r++]-nums[l++]));
        }
        return min;
        }
    }


润–


http://www.niftyadmin.cn/n/5276539.html

相关文章

麒麟V10 ARM 离线生成RabbitMQ docker镜像并上传Harbor私有仓库

第一步在外网主机执行&#xff1a; docker pull arm64v8/rabbitmq:3.8.9-management 将下载的镜像打包给离线主机集群使用 在指定目录下执行打包命令&#xff1a; 执行&#xff1a; docker save -o rabbitmq_arm3.8.9.tar arm64v8/rabbitmq:3.8.9-management 如果懒得打包…

macOS下载

macOS 下载 历史版本下载地址&#xff1a; https://support.apple.com/zh-cn/HT211683 例&#xff1a; macOS 11 Big sur: https://apps.apple.com/cn/app/macos-big-sur/id1526878132?mt12

【go-zero】 go-zero API 如何接入 Nacos 被 java 服务调用 | go集成java服务

一、场景 外层使用的是springcloud alibaba 这一套java的分布式架构 然后需要接入go-zero的api服务 这里我们将对api服务接入Nacos进行一个说明 二、实战 1、package 因为使用的是go-zero框架 这里我们会优先使用go-zero生态的包 github 包如下: github.com/nacos-group/naco…

Elasticsearch集群腾讯云迁移到线下机房(无感迁移)

前言&#xff1a; Eastic 自身设计了集群腾讯云迁移到&#xff08;负载均衡&#xff09;机制。当前有新数据节点加入集群或者离开集群&#xff0c;集群会自动平衡分片的负载均衡。 背景要求&#xff1a; 公司原有大数据平台基于公有云构建&#xff0c;由于种种原因&#xff…

utf8编码格式

前言 默认bigEndian。 实现 依次读char的ascii值。 这个值显然在 [0,2^8-1] 范围内。 判断几个档位。如图。 注意到图中&#xff0c;<224的时候&#xff0c;保留6位&#xff0c;我标注的是000x xxxx 实际上只有5个x。这是因为<224&#xff0c;前3位必定都是0&#xf…

Java如何开发PC客户端(Windows,Mac,Linux)

项目编译工具&#xff1a;Gradle开发工具&#xff1a; Idea开发语言&#xff1a; 建议java17以上ui组件&#xff1a;openjfx (org.openjfx.javafxplugin)打包工具: jpackage (org.beryx.jlink) 一、如何解决打包问题 java 14以后&#xff0c;有了jpackage工具&#xff0c;能够…

python包管理rye安装torch

最近在使用pip或中poetry对python进行包管理&#xff0c;始终觉得不是很理想。2023年flask的作者参考rust的管理哲学&#xff0c;编写了rye的python包管理工具&#xff0c;故试用之。使用过程中&#xff0c;遇到安装torch的问题&#xff0c;故这里写一下笔记。 1. 本地windows…

python flask+vue实现前后端图片上传

python flaskvue实现前后端图片上传 vue代码如下&#xff1a; <template><div><input type"file" change"handleFileChange"/><button click"uploadFile">上传</button><br><img :src"imageUrl&…