Bike Tour|Google Coding Problem

Problem

Li has planned a bike tour through the mountains of Switzerland. His tour consists of N checkpoints, numbered from 1 to N in the order he will visit them. The i-th checkpoint has a height of Hi.

google coding

A checkpoint is a peak if:

  • It is not the 1st checkpoint or the N-th checkpoint, and
  • The height of the checkpoint is strictly greater than the checkpoint immediately before it and the checkpoint immediately after it.

Please help Li find out the number of peaks.

Input

The first line of the input gives the number of test cases, T. T test cases follow. Each test case begins with a line containing the integer N. The second line contains N integers. The i-th integer is Hi.

Output

For each test case, output one line containing Case #x: y, where x is the test case number (starting from 1) and y is the number of peaks in Li's bike tour.

Limits

Time limit: 10 seconds per test set.
Memory limit: 1GB.
1 ≤ T ≤ 100.
1 ≤ Hi ≤ 100.

3 ≤ N ≤ 5.

3 ≤ N ≤ 100.

Sample

Input

4
3
10 20 14
4
7 7 7 7
5
10 90 20 90 10
3
10 3 10

Output

Case #1: 1
Case #2: 0
Case #3: 2
Case #4: 0
  • In sample case #1, the 2nd checkpoint is a peak.
  • In sample case #2, there are no peaks.
  • In sample case #3, the 2nd and 4th checkpoint are peaks.
  • In sample case #4, there are no peaks.
google coding

Code & Algorithm


/* author : @akash kumar */
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define mod 1000000007
#define pb push_back
#define ld long double
int countPeaks(vector<int> checkpoints) {
int peaks = 0;
for(int i = 1; i < checkpoints.size() - 1; i++) {
if(checkpoints[i-1] < checkpoints[i] && checkpoints[i+1] < checkpoints[i]) {
peaks++;
}
}
return peaks;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t;
cin>>t;
for(int i=1;i<=t;++i)
{
int N;
cin>>N;
vector<int>checkpoints(N);
for(int i=0;i<N;++i)
{
cin>>checkpoints[i];
}
cout<<"Case #"<<i<<": "<<countPeaks(checkpoints);
cout<<"\n";
}
return 0;
}

For each of the checkpoints, we can determine if it is a peak in O(1) time by comparing its height to the heights of the checkpoints before and after it.

google coding

There are N checkpoints, so the total time complexity of this approach is O(N), which is sufficient for both Test Set 1 and Test Set 2.

Thank You.

Akash Kumar

Software Engineer

--

--

--

Student of Computer Science & Engineering at Moradabad Institute of Technology.

Love podcasts or audiobooks? Learn on the go with our new app.

Choosing the Right API Generator

3D Experience

Understanding Computer Vision : Part 2

Improve the Code Quality in Python Projects using Pre-Commit Hooks

Develop on macOS: don’t clutter your home folder as I did…

A screenshot of my user folder showing lots of hidden sub-folders from different developemtn enviroment I havee isntalled.

How NOT to learn coding

When flutter crashed!…..

Extra Benefits for Mainnet Users

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Akash Kumar

Akash Kumar

Student of Computer Science & Engineering at Moradabad Institute of Technology.

More from Medium

Origin and Evolution of Algorithms

Greedy Algorithm

How to approach a new coding project and writers block

3 Best Languages for Competitive Programming