- Longest subarray
- 2024-03-29 11:24:03 @
Prerequisite : Number Theory, Binary Search, Two Pointer, Prefix Sum
Problem statement summary : You are given an Array A[] of length N. You need to find out the length of the longest subarray where the GCD of the subarray is greater than X.
Solution : If you have noticed , X and all elements of the array are less than or equal 100.
For each i is 1<= i <= 100, we can calculate in a 2d array , total cost for which gcd we want to make.
For example, if we want to make gcd = 3, and subarray is looking like A = {1 , 2, 1};
For position 1, we need to increase 2 times, A ={ 3, 2, 1}
For position 2, we need to increase 1 times, A = {3, 3, 1}
For position 3, we need to increase 2 times, A ={ 3, 3,3} , gcd = 3.
Total cost for each position we can save an array.
In each subarray, We can use binary search, because we have limit of cost K.
For each, i > X , Find the best subarray which length is maximum and total cost is less than or equal K.
Time Complexity : O ( 100 * N * log (N) ).
Instead of Binary Search we can use two pointer, time complexity has less than above solution and its complexity: O (100 * N). check ->(Tester Code) in Solution section.
0 comments
Information
- ID
- 1043
- Difficulty
- 5
- Category
- Number_Theory , Two_Pointer , Binary_Search Click to Show
- Tags
- # Submissions
- 23
- Accepted
- 11
- Accepted Ratio
- 48%
- Uploaded By