Skip to content

Commit 14f513e

Browse files
authored
Create 2501. Longest Square Streak in an Array (#619)
2 parents 6a14b83 + bb1cf55 commit 14f513e

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
class Solution {
2+
public:
3+
int longestSquareStreak(vector<int>& nums) {
4+
int longestStreak = -1,n;
5+
n = nums.size();
6+
vector<int> presenceChecker(100001,0);
7+
8+
// Keeping track of presence of each element of nums array in presenceChecker array.
9+
for(int i=0;i<n;i++)
10+
presenceChecker[nums[i]] = 1;
11+
12+
// Applying our algorithm for each element in nums array.
13+
for(int i=0;i<n;i++){
14+
long long int curr = nums[i];
15+
int currLongestStreak = 1;
16+
while(true){
17+
if(curr*curr<100001 && presenceChecker[curr*curr] == 1){
18+
currLongestStreak++;
19+
curr = curr*curr;
20+
}
21+
else
22+
break;
23+
}
24+
// if there is atleat 1 next square present in the array then currLongestStreak will
25+
// be always greater than 1.
26+
if(currLongestStreak != 1)
27+
longestStreak = max(longestStreak,currLongestStreak);
28+
}
29+
30+
return longestStreak;
31+
}
32+
};

0 commit comments

Comments
 (0)