C++ 数组的平衡索引28 Aug 2024 | 5 分钟阅读 一个序列的平衡点索引是指序列中的一个索引,使得其左侧所有元素的总和等于其右侧所有元素的总和。 例如,在序列 A 中: A{0}=-8 A{1}=2 A{2}=5 A{3}=2 A{4}=-6 A{5}=3 A{6}=0 3 是平衡点索引。A{0}+A{1}+A{2}=A{4}+A{5}+A{6} 7 不是平衡点,因为它不在范围内。 换句话说,一个数组的平衡点索引是一个索引 i,使得索引小于 i 的元素的总和等于索引大于 i 的元素的总和。我们知道索引 i 处的组件不包含在任何一部分中,并且规定如果存在多个平衡点索引,您必须返回第一个。如果找不到平衡点索引,则返回 -1。 方法 1:使用两个循环在此方法中,我们使用两个循环,其中外层循环遍历所有元素,而内层循环确定外层循环选择的当前索引是否为平衡点索引。此解决方案的时间复杂度为 O(N^2)。此方法的目的是为每个索引找到所有事件的总和。外层循环遍历值数组,内层循环确定它是否包含平衡点索引。 步骤序列
文件名:Equilibrium_index.cpp 输出 6 方法 2:(巧妙且高效)计算数组的总和并将数组的左侧和初始化为 0。遍历数组时,从总和中减去当前元素以获得正确的和。在每一步,仔细检查 left 和 right 和。如果两者相等,则返回当前索引。 第一个目标是获取数组的总和。之后,遍历数组并更新左侧和值。我们可以通过单独减去项来在循环中获得正确的和。存储数组的前缀和。前缀和可以帮助跟踪数组中直到任何索引的每个元素的和。现在,我们需要弄清楚如何跟踪当前索引值右侧的值的总和。 我们可以使用一个临时和变量,该变量最初保存数组元素的总和。如果我们从索引中删除当前值,我们就可以得到右侧的总值。现在,评估 left_sum 和 right_sum 值,以确定当前索引是否对应于平衡点索引。 算法
文件名:EqIndex.cpp 输出 The First equilibrium index of the array is 6 方法 3这是一个非常简单的方法。目标是将数组的前缀和乘以二。一次从数组的前端开始,另一次从数组的后端开始。 收集两个前缀和后,执行一个循环,并查看一个数组的两个前缀和是否与另一个数组的相应前缀和在至少一个索引 'i' 处相同。如果满足此条件,则此点可能被视为平衡点。 文件名:Equindex.cpp 输出 The First Point of equilibrium of the array is at index 6 复杂度 时间复杂度:O(N) 空间复杂度:O(N) 下一个主题C++ 中的 flock() 函数 |
在组合数学和计算机科学中,稳定婚姻问题是一个著名的谜题。它涉及在两组元素(例如男性和女性)之间建立稳定匹配,其中每个人对构成另一组的个体都有不同的偏好。如果...
阅读 4 分钟
C++ 泛型编程简介 使用 C++ 模板,泛型编程模式将该方法推广,使其可以与各种数据类型一起使用。我们不指定实际数据类型,而是为模板提供一个占位符,然后用数据替换该占位符……
7 分钟阅读
在 C++ 中,指向对象的指针允许我们使用内存地址来引用和操作类对象。这是一个非常重要的功能,对于动态内存分配、高效地将对象传递给函数、实现多态以及使用数据结构(例如...)都非常有帮助。
阅读 10 分钟
插值搜索是一种算法,用于在排序数组中有效地搜索目标值。与总是检查搜索区间中间元素的二分搜索相反,插值搜索根据...的值更明智地估计目标的位置。
18 分钟阅读
计算机程序中的浮点运算通常涉及可能导致不准确性和异常情况的近似值。当执行敏感的数值计算时,这些异常可能导致不希望的程序终止或不正确的输出。C++ 编程语言提供了处理这些浮点异常的机制和用于...
阅读 6 分钟
字符串操作在 C++ 中是一项相当常见的操作,选择合适的连接方式以确保效率和良好的可读代码非常重要。这篇博文将探讨在 C++ 中连接字符串的三个流行方法:append、push_back 或 std::string 的 += 运算符...
阅读 3 分钟
什么是最高效的作业调度?遵循非抢占式调度原则的作业或进程调度方法称为最短作业优先调度。在这种情况下,调度程序从等待列表中选择具有最短完成时间的作业或进程,并分配...
阅读 8 分钟
在 C++ 语言中,fallthrough(贯穿)是指在 switch 语句中,控制流从一个 case 流向另一个 case 的行为。当 case 结尾没有 break 语句时,就会发生这种情况,允许控制继续到下一个 case。在编程控制中……
5 分钟阅读
除了使用指针直接修改内存地址之外,C++ 还提供了强大的内存管理功能。虽然指针对于动态内存分配至关重要,但管理不当可能导致内存泄漏和不可预测的行为等问题。Unique_ptr 是...的关键部分。
阅读 3 分钟
在本文中,我们将通过几个例子讨论 C++ 中的大树列表问题。简介:设想一个计算数字阶乘的程序。此函数以数字 N 作为输入,并返回 N 的阶乘作为结果。此函数的伪代码将...
7 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India