2025-02-03 Daily Challenge
Today I have done leetcode's February LeetCoding Challenge with cpp
.
February LeetCoding Challenge 3
Description
Longest Strictly Increasing or Strictly Decreasing Subarray
You are given an array of integers nums
. Return the length of the longest subarray of nums
which is either strictly increasing or strictly decreasing.
Example 1:
Input: nums = [1,4,3,3,2]
Output: 2
Explanation:
The strictly increasing subarrays of nums
are [1]
, [2]
, [3]
, [3]
, [4]
, and [1,4]
.
The strictly decreasing subarrays of nums
are [1]
, [2]
, [3]
, [3]
, [4]
, [3,2]
, and [4,3]
.
Hence, we return 2
.
Example 2:
Input: nums = [3,3,3,3]
Output: 1
Explanation:
The strictly increasing subarrays of nums
are [3]
, [3]
, [3]
, and [3]
.
The strictly decreasing subarrays of nums
are [3]
, [3]
, [3]
, and [3]
.
Hence, we return 1
.
Example 3:
Input: nums = [3,2,1]
Output: 3
Explanation:
The strictly increasing subarrays of nums
are [3]
, [2]
, and [1]
.
The strictly decreasing subarrays of nums
are [3]
, [2]
, [1]
, [3,2]
, [2,1]
, and [3,2,1]
.
Hence, we return 3
.
Constraints:
1 <= nums.length <= 50
1 <= nums[i] <= 50
Solution
template <typename T> int sgn(T val) {
return (T(0) < val) - (val < T(0));
}
class Solution {
public:
int longestMonotonicSubarray(vector<int>& nums) {
int answer = 1;
int len = 0;
int s = 0;
for(int i = 1; i < nums.size(); ++i) {
if(sgn(nums[i] - nums[i - 1]) != s) {
s = sgn(nums[i] - nums[i - 1]);
len = 1;
}
len += 1;
if(s) answer = max(len, answer);
}
return answer;
}
};
// Accepted
// 868/868 cases passed (3 ms)
// Your runtime beats 8.24 % of cpp submissions
// Your memory usage beats 89.71 % of cpp submissions (27.8 MB)