在本教程中,我们将讨论一个查找树中祖先-后代关系查询的程序。我们将得到一棵有根树和 Q 个查询。我们的任务是找出查询中给定的两个节点是否一个是另一个的祖先。示例 在线演示#include using namespace std; //使用DFS查找给定节点之间的关系 //给定节点 void performingDFS(vector g[], int u, int parent, int timeIn[], int timeOut[], int& count) { timeIn[u] = count++; for (int i = 0; i < g[u].size(); i++) { int v = g[u][i]; ... 阅读更多
在本教程中,我们将讨论一个查找查询的程序,该查询返回第 L 小数和第 R 小数之间的绝对差。我们将得到一个包含整数的数组和 Q 个查询。我们的任务是找到第 L 小和第 R 小值的索引之间的绝对差。示例 在线演示#include using namespace std; //返回查询结果 int respondingQuery(pair arr[], int l, int r) { int result = abs(arr[l - 1].second - arr[r - 1].second); return result; } //实现查询 void calcDifference(int givenarr[], int a, int ... 阅读更多
在本教程中,我们将讨论一个查找查询的程序,该查询更新给定索引并在范围内查找最大公约数。我们将得到一个包含整数的数组和 Q 个查询。我们的任务是找到给定查询的结果(将给定值更新为 X,找到两个给定值之间的最大公约数)。示例 在线演示#include using namespace std; //获取中间索引 int findMiddle(int s, int e) { return (s + (e - s) / 2); } //更新给定索引处的数值 void updateIndexValue(int* st, int ss, int se, int i, int diff, int si) ... 阅读更多
在本教程中,我们将讨论一个查找字符串中不同年份总数的程序。我们将得到一个包含“DD-MM-YYYY”格式日期的字符串。我们的任务是找到给定字符串中提到的不同年份的数量。示例 在线演示#include using namespace std; //计算提到的不同年份 int calculateDifferentYears(string str) { unordered_set differentYears; string str2 = ""; for (int i = 0; i < str.length(); i++) { if (isdigit(str[i])) { str2.push_back(str[i]); } if ... 阅读更多
在本教程中,我们将讨论一个查找信号到达字符串中所有位置所需时间的程序。我们将得到一个包含“x”和“o”的字符串。信号从“x”发出,并向两个方向传播,每次改变一个“o”值,时间为一个单位。我们的任务是计算将整个字符串转换为“x”的总时间。示例 在线演示#include using namespace std; //计算所需总时间 int findMaximumDuration(string s, int n) { int right = 0, left = 0; int count = 0, maximumLength = INT_MIN; s ... 阅读更多
在本教程中,我们将讨论一个查找三元组的程序,使得连接这些三元组的节点数最多。我们将得到一棵有 N 个节点的树。我们的任务是找到一个节点的三元组,使得连接它们的路经中包含的节点数最多。示例 在线演示#include #define ll long long int #define MAX 100005 using namespace std; vector nearNode[MAX]; bool isTraversed[MAX]; //存储所需节点 int maxi = -1, N; int parent[MAX]; bool vis[MAX]; int startnode, endnode, midNode; //实现 DFS 以搜索节点 void performDFS(int u, int count) { ... 阅读更多
在本教程中,我们将讨论一个查找由同一矩阵的行主序和列主序相加形成的矩阵的迹的程序。我们将得到两个数组,一个为行主序,另一个为列主序。我们的任务是找到由两个给定矩阵相加形成的矩阵的迹。示例 在线演示#include using namespace std; //计算新矩阵的 calculateMatrixTrace 迹 int calculateMatrixTrace(int row, int column) { int A[row][column], B[row][column], C[row][column]; int count = 1; for (int i = 0; i < row; i++) for ... 阅读更多