645 次浏览
假设我们有一组整数。我们的任务是找到四个不同的整数作为两对,例如 (a, b) 和 (c, d),使得 a+b = c+d。如果有多个答案,则只打印一个。假设数组元素如下:A = [7, 5, 9, 3, 6, 4, 2],则对可以是 (7, 3) 和 (6, 4)。这里我们将使用哈希技术。我们使用和作为键,对作为哈希表中的值。为了解决这个问题,我们必须遵循以下步骤:对于从 0 到 n – ... 阅读更多
307 次浏览
假设我们有三个已排序的数组 A、B 和 C,以及来自 A、B 和 C 的三个元素 i、j 和 k,使得 max(|A[i] – B[i]|, |B[j] – C[k]|, |C[k] – A[i]|) 最小化。因此,如果 A = [1, 4, 10],B = [2, 15, 20],C = [10, 12],则输出元素为 10、15、10,这三个来自 A、B 和 C。假设 A、B 和 C 的大小分别为 p、q 和 r。现在按照以下步骤解决这个问题:i := 0,j := 0 和 k := 0 现在执行以下操作 ... 阅读更多
115 次浏览
假设我们有一个大小为 n 的数组。这个数组已排序。有一个元素的频率大于或等于 n/2,其中 n 是数组中元素的数量。因此,如果数组类似于 [3, 4, 5, 5, 5],则输出将为 5。如果我们仔细观察这些类型的数组,我们可以很容易地注意到,频率大于或等于 n/2 的数字也存在于索引 n/2 处。因此,该元素可以在位置 n/2 处找到。示例实时演示源代码:#include using namespace std; int higherFreq(int arr[], ... 阅读更多
979 次浏览
假设我们有一个整数 N,我们必须找到奇数位数字和偶数位数字的和。因此,如果数字类似于 153654,则 odd_sum = 9,even_sum = 15。为了解决这个问题,我们可以从最后一位提取所有数字,如果原始数字有奇数位数字,则最后一位必须是奇数位,否则它将是偶数位。处理一个数字后,我们可以将状态从奇数变为偶数,反之亦然。示例实时演示#include using namespace std; bool isOdd(int x){ if(x % 2 == 0) ... 阅读更多
89 次浏览
假设我们有一列从 0 到 n-1 的数字。一个数字可以重复任意多次。我们必须在不占用任何额外空间的情况下找到重复的数字。如果 n 的值为 7,列表类似于 [5, 2, 3, 5, 1, 6, 2, 3, 4, 5]。答案将是 5、2、3。为了解决这个问题,我们必须遵循以下步骤:对于列表中的每个元素 e,执行以下步骤:sign := A[e 的绝对值]如果符号为正,则将其设为负否则,它是一个 ... 阅读更多
280 次浏览
假设我们有一个数字 n。我们必须找到 1 到 n 之间素数的乘积。因此,如果 n = 7,则输出将为 210,因为 2 * 3 * 5 * 7 = 210。我们将使用埃拉托色尼筛法查找所有素数。然后计算它们的乘积。示例实时演示#include using namespace std; long PrimeProds(int n) { bool prime[n + 1]; for(int i = 0; i <
312 次浏览
假设我们有一棵包含几个节点的二叉树。我们必须找到根与另一个节点 u 之间的距离。假设树如下所示:现在 (根,6) 之间的距离 = 2,路径长度为 2,(根,8) 之间的距离 = 3 等。为了解决这个问题,我们将使用递归方法搜索左子树和右子树中的节点,并更新每一层的长度。示例实时演示#include using namespace std; class Node { public: int data; Node *left, *right; }; Node* getNode(int data) { Node* node = ... 阅读更多
167 次浏览
假设我们有一个数字 n。我们必须找到将数字分成 (a、b、c 和 d) 部分的方法数,使得 a = c 且 b = d。因此,如果数字为 20,则输出将为 4。作为 [1, 1, 9, 9]、[2, 2, 8, 8]、[3, 3, 7, 7] 和 [4, 4, 6, 6] 因此,如果 N 为奇数,则答案将为 0。如果数字可以被 4 整除,则答案将为 n/4 – 1,否则为 n/4。示例实时演示#include using namespace std; int countPossiblity(int num) { if (num % 2 == 1) return 0; else if (num % 4 == 0) return num / 4 - 1; else return num / 4; } int main() { int n = 20; cout <
168 次浏览
假设我们有一棵包含几个节点的二叉树。我们必须找到两个节点 u 和 v 之间的距离。假设树如下所示:现在 (4, 6) 之间的距离 = 4,路径长度为 4,(5, 8) 之间的长度 = 5 等。为了解决这个问题,我们将找到 LCA(最近公共祖先),然后计算从 LCA 到两个节点的距离。示例实时演示#include using namespace std; class Node { public: int data; Node *left, *right; }; Node* getNode(int data) { Node* node = new Node; node->data = data; node->left ... 阅读更多
209 次浏览
假设我们有一个整数 X。我们必须找到从 0 到达 X 所需的最小跳跃次数。第一次跳跃的长度可以是一个单位,并且每次后续跳跃的长度都比前一次跳跃的长度恰好长一个单位。每次跳跃都允许向左或向右移动。因此,如果 X = 8,则输出为 4。0 → -1 → 1 → 4 → 8 是可能的阶段。如果我们仔细观察,我们可以说,如果你总是向右跳跃,那么 n 次跳跃后你将……阅读更多