2779。应用操作后数组的最大美感
难度:中等
主题:数组、二分查找、滑动窗口、排序
给你一个0索引数组nums和一个非负整数k。
在一次操作中,您可以执行以下操作:
- 从 [0, nums.length - 1] 范围中选择 之前未选择过的索引 i。
- 将 nums[i] 替换为 [nums[i] - k, nums[i] k] 范围内的任意整数。
数组的beauty是由相等元素组成的最长子序列的长度。
返回应用操作任意次数后最大数组nums可能的美度。
注意您只能对每个索引应用一次操作。
数组的子序列是通过删除原始数组中的一些元素(可能没有)而不改变剩余元素的顺序而生成的新数组。
示例1:
- 输入: nums = [4,6,1,2], k = 2
- 输出: 3
-
说明: 在此示例中,我们应用以下操作:
- 选择索引 1,将其替换为 4(范围 [4,8]),nums = [4,4,1,2]。
- 选择索引 3,将其替换为 4(范围 [0,4]),nums = [4,4,1,4]。
- 应用操作后,数组 nums 的美度为 3(由索引 0、1 和 3 组成的子序列)。
- 可以证明3是我们可以达到的最大可能长度。
示例2:
- 输入: nums = [1,1,1,1], k = 10
- 输出: 4
-
说明:在此示例中,我们不必应用任何操作。
- 数组 nums 的美丽值为 4(整个数组)。
约束:
- 1 5
- 0 5
提示:
- 对数组进行排序。
- 问题变为:找到最大子数组 A[i … j],使得 A[j] - A[i] ≤ 2 * k。
解决方案:
我们可以利用排序和滑动窗口方法。
方法:
- 对数组进行排序:排序简化了识别最大元素和最小元素之间的差异不超过2k. 的子序列
- 滑动窗口技术:维护索引窗口[i, j],其中差异nums[j] - nums[i] 。调整 i 或 j 以使窗口大小最大化。
让我们用 PHP 实现这个解决方案:2779。应用操作后数组的最大美感
<?php /** * @param Integer[] $nums * @param Integer $k * @return Integer */ function maximumBeauty($nums, $k) { ... ... ... /** * go to ./solution.php */ } // Example Usage: $nums1 = [4, 6, 1, 2]; $k1 = 2; echo maximumBeauty($nums1, $k1) . "\n"; // Output: 3 $nums2 = [1, 1, 1, 1]; $k2 = 10; echo maximumBeauty($nums2, $k2) . "\n"; // Output: 4 ?>
解释:
-
对数组进行排序:
- 排序确保由索引 [i, j] 定义的窗口中的所有元素均按升序排列,这使得更容易检查中的最小值和最大值之间的差异窗户。
-
滑动窗口:
- 以 i 和 j 开头。
- 通过增加 j 来扩展窗口,并在条件 nums[j] - nums[i] > 时通过增加 i 来保持窗口有效。 2k 被侵犯。
- 每一步计算当前有效窗口的大小j - i 1并更新maxBeauty。
复杂度分析:
-
时间复杂度:
- 对数组进行排序:O(n log n).
- 滑动窗口遍历:O(n).
- 总体:O(n log n).
-
空间复杂度:
- O(1),因为该解决方案仅使用几个附加变量。
示例:
输入1:
$nums = [4, 6, 1, 2]; $k = 2; echo maximumBeauty($nums, $k); // Output: 3
输入2:
$nums = [1, 1, 1, 1]; $k = 10; echo maximumBeauty($nums, $k); // Output: 4
该解决方案遵守约束并有效计算大量输入的结果。
联系链接
如果您发现本系列有帮助,请考虑在 GitHub 上给 存储库 一个星号或在您最喜欢的社交网络上分享该帖子?。您的支持对我来说意义重大!
如果您想要更多类似的有用内容,请随时关注我:
- 领英
- GitHub
以上是应用运算后数组的最大美感的详细内容。更多信息请关注PHP中文网其他相关文章!

长URL(通常用关键字和跟踪参数都混乱)可以阻止访问者。 URL缩短脚本提供了解决方案,创建了简洁的链接,非常适合社交媒体和其他平台。 这些脚本对于单个网站很有价值

Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

这是有关用Laravel后端构建React应用程序的系列的第二个也是最后一部分。在该系列的第一部分中,我们使用Laravel为基本的产品上市应用程序创建了一个RESTFUL API。在本教程中,我们将成为开发人员

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显着减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

2025年的PHP景观调查调查了当前的PHP发展趋势。 它探讨了框架用法,部署方法和挑战,旨在为开发人员和企业提供见解。 该调查预计现代PHP Versio的增长

在本文中,我们将在Laravel Web框架中探索通知系统。 Laravel中的通知系统使您可以通过不同渠道向用户发送通知。今天,我们将讨论您如何发送通知OV


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)