Sponsored
Sponsored
This approach involves iterating through each number from 1 to n and checking if it satisfies the given condition of a pivot integer. For each candidate pivot integer x, calculate the sum of numbers from 1 to x using the formula for the sum of an arithmetic series. Similarly, calculate the sum from x to n. Compare these sums to determine if x is a pivot integer.
Time Complexity: O(n).
Space Complexity: O(1).
1#include <stdio.h>
2
3int find_pivot(int n) {
4 for (int x = 1; x <= n; ++x) {
5 int sum1 = x * (x + 1) / 2;
6 int sum2 = (n * (n + 1) / 2) - ((x - 1) * x / 2);
7 if (sum1 == sum2) return x;
8 }
9 return -1;
10}
11
12int main() {
13 int n = 8;
14 int result = find_pivot(n);
15 printf("%d\n", result);
16 return 0;
17}
The function find_pivot
iterates through numbers from 1 to n. For each number, it calculates the sum of numbers from 1 to x (sum1
) and from x to n (sum2
). It returns x if the two sums are equal, otherwise returns -1 at the end.
Instead of iterating through each possible x, we can use mathematical formulation. As the sum from 1 to n is fixed, let's denote the total sum as S. Then, for pivot x, the condition becomes:
(x * (x + 1)) / 2 = (S - ((x - 1) * x) / 2)
From this, derive a formula to find x directly if it exists. Solving algebraically can help us identify the pivot integer without iteration.
Time Complexity: O(n).
Space Complexity: O(1).
1
In Python, this solution simplifies finding the pivot by checking an optimized mathematical equality for each x.