2563。计算公平对的数量
难度:中等
主题:数组、两个指针、二分查找、排序
给定一个 0 索引的 大小为 n 的整数数组 nums 和两个上下整数,返回 公平对的数量 .
一对 (i, j) 是 公平如果:
示例1:
示例2:
约束:
提示:
解决方案:
我们可以使用以下方法:
让我们用 PHP 实现这个解决方案:2563。计算公平对的数量
<?php /** * @param Integer[] $nums * @param Integer $lower * @param Integer $upper * @return Integer */ function countFairPairs($nums, $lower, $upper) { ... ... ... /** * go to ./solution.php */ } /** * Helper function for binary search to find left boundary * * @param $arr * @param $target * @param $start * @return int|mixed */ function lowerBound($arr, $target, $start) { ... ... ... /** * go to ./solution.php */ } /** * Helper function for binary search to find right boundary * * @param $arr * @param $target * @param $start * @return int|mixed */ function upperBound($arr, $target, $start) { ... ... ... /** * go to ./solution.php */ } // Example usage: $nums = [0, 1, 7, 4, 4, 5]; $lower = 3; $upper = 6; echo countFairPairs($nums, $lower, $upper); // Output: 6 ?>
由于对每个元素进行排序和二分搜索,这种方法的时间复杂度为 O(n log n),这对于大型输入来说足够高效。
联系链接
如果您发现本系列有帮助,请考虑在 GitHub 上给 存储库 一个星号或在您最喜欢的社交网络上分享该帖子?。您的支持对我来说意义重大!
如果您想要更多类似的有用内容,请随时关注我:
以上是计算公平对的数量的详细内容。更多信息请关注PHP中文网其他相关文章!