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中文网其他相关文章!

tomakephpapplicationsfaster,关注台词:1)useopcodeCachingLikeLikeLikeLikeLikePachetoStorePreciledScompiledScriptbyTecode.2)MinimimiedAtabaseSqueriSegrieSqueriSegeriSybysequeryCachingandeffeftExting.3)Leveragephp7 leveragephp7 leveragephp7 leveragephpphp7功能forbettercodeefficy.4)

到ImprovephPapplicationspeed,关注台词:1)启用opcodeCachingwithapCutoredUcescriptexecutiontime.2)实现databasequerycachingusingpdotominiminimizedatabasehits.3)usehttp/2tomultiplexrequlexrequestsandredececonnection.4 limitsclection.4.4

依赖注入(DI)通过显式传递依赖关系,显着提升了PHP代码的可测试性。 1)DI解耦类与具体实现,使测试和维护更灵活。 2)三种类型中,构造函数注入明确表达依赖,保持状态一致。 3)使用DI容器管理复杂依赖,提升代码质量和开发效率。

databasequeryOptimizationinphpinvolVolVOLVESEVERSEVERSTRATEMIESOENHANCEPERANCE.1)SELECTONLYNLYNESSERSAYCOLUMNSTORMONTOUMTOUNSOUDSATATATATATATATATATATRANSFER.3)

phpisusedforsenderemailsduetoitsbuilt-inmail()函数andsupportiveLibrariesLikePhpMailerandSwiftMailer.1)usethemail()functionforbasicemails,butithasimails.2)butithasimimitations.2)

PHP性能瓶颈可以通过以下步骤解决:1)使用Xdebug或Blackfire进行性能分析,找出问题所在;2)优化数据库查询并使用缓存,如APCu;3)使用array_filter等高效函数优化数组操作;4)配置OPcache进行字节码缓存;5)优化前端,如减少HTTP请求和优化图片;6)持续监控和优化性能。通过这些方法,可以显着提升PHP应用的性能。

依赖性注射(DI)InphpisadesignPatternthatManages和ReducesClassDeptions,增强量产生性,可验证性和Maintainability.itallowspasspassingDepentenciesLikEdenceSeconnectionSeconnectionStoclasseconnectionStoclasseSasasasasareTers,interitationApertatingAeseritatingEaseTestingEasingEaseTeStingEasingAndScalability。

cachingimprovesphpermenceByStorcyResultSofComputationsorqucrouctationsorquctationsorquickretrieval,reducingServerLoadAndenHancingResponsetimes.feftectivestrategiesinclude:1)opcodecaching,whereStoresCompiledSinmememorytssinmemorytoskipcompliation; 2)datacaching datacachingsingMemccachingmcachingmcachings


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

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

禅工作室 13.0.1
功能强大的PHP集成开发环境

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

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

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器