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

使数组k递增的最少操作次数

2111. 使数组 K 递增的最少操作次数 - 力扣(LeetCode)


Solution

可以发现元素只与自己同余下标的元素有关系,所以可以直接分组做,分成k组。

分组之后,寻找每个组内的最长不下降子序列的长度,用这个组的总长度减去最长不下降子序列的长度就可以得到这一组需要修改的元素个数了。把每一组需要修改的个数累加起来就可以得到答案。

#include<iostream>
#include<vector>
using namespace std;class Solution {
public:int kIncreasing(vector<int>& arr, int k) {vector<vector<int>>nums(k);int ans = 0;for (int i = 0; i < arr.size(); ++i) {int m = i % k;nums[m].push_back(arr[i]);}for (int i = 0; i < k; ++i) {int len = nums[i].size();int lenOfLIS = lengthOfLIS(nums[i]);ans += len - lenOfLIS;}return ans;}int lengthOfLIS(vector<int>& nums) {int n = nums.size();vector<int>ends;ends.push_back(nums[0]);for (int i = 1; i < n; ++i) {int cur = nums[i];int index = bs(ends, cur);if (index == -1) {ends.push_back(cur);}else {ends[index] = cur;}}return ends.size();}int bs(vector<int>& nums, int target) {int l = 0, r = nums.size() - 1;int ans = -1;while (l <= r) {int mid = (l + r) >> 1;if (nums[mid] > target) {ans = mid;r = mid - 1;}else {l = mid + 1;}}return ans;}
};int main() {return 0;
}

http://www.dtcms.com/a/341131.html

相关文章:

  • 路由器的NAT类型
  • 确保测试环境一致性与稳定性 5大策略
  • AI 效应: GPT-6,“用户真正想要的是记忆”
  • 获取本地IP地址、MAC地址写法
  • SQL 中大于小于号的表示方法总结
  • Bitcoin有升值潜力吗
  • 《代码沙盒深度实战:iframe安全隔离与实时双向通信的架构设计与落地策略》
  • 在SQL中使用大模型时间预测模型TimesFM
  • Mybatis执行SQL流程(五)之MapperProxy与MapperMethod
  • zoho crm api 无法修改富文本字段的原因:api 版本太低
  • 23种设计模式——构建器模式(Builder Pattern)详解
  • Spring Boot Controller 使用 @RequestBody + @ModelAttribute 接收请求
  • 车联网(V2X)中万物的重新定义---联网汽车新时代
  • Dubbo 的 Java 项目间调用的完整示例
  • 分析NeRF模型中颜色计算公式中的参数
  • Paraformer实时语音识别中的碎碎念
  • RuntimeError: Dataset scripts are no longer supported, but found wikipedia.py
  • 车辆订单状态管理的优化方案:状态机设计模式
  • 从ioutil到os:Golang在线客服聊天系统文件读取的迁移实践
  • 从零开发Java坦克大战Ⅱ(上) -- 从单机到联机(架构演进与设计模式剖析)
  • 音频大模型学习笔记
  • CS+ for CC编译超慢的问题该如何解决
  • 0-1 背包问题(模板)
  • 汽车ECU实现数据安全存储(机密性保护)的一种方案
  • Ubuntu apt安装nginx
  • 使用Spring Retry组件优雅地实现重试
  • Java 定时任务 - 从基础到高阶使用 - 从 Timer 到 Quart
  • 数据结构 二叉树 二叉树链式结构的实现
  • 数据分析师常用命令
  • 数据结构中的列表:深度解析数组与链表的实现与抉择