LeetCode-in-Java

3751. Total Waviness of Numbers in Range I

Medium

You are given two integers num1 and num2 representing an inclusive range [num1, num2].

The waviness of a number is defined as the total count of its peaks and valleys:

Return the total sum of waviness for all numbers in the range [num1, num2].

Example 1:

Input: num1 = 120, num2 = 130

Output: 3

Explanation:

In the range [120, 130]:

Thus, total waviness is 1 + 1 + 1 = 3.

Example 2:

Input: num1 = 198, num2 = 202

Output: 3

Explanation:

In the range [198, 202]:

Thus, total waviness is 1 + 1 + 1 = 3.

Example 3:

Input: num1 = 4848, num2 = 4848

Output: 2

Explanation:

Number 4848: the second digit 8 is a peak, and the third digit 4 is a valley, giving a waviness of 2.

Constraints:

Solution

public class Solution {
    private int countpeakValley(int num) {
        int lastdigit = num % 10;
        int waiviness = 0;
        int prevcurrent = -1;
        num = num / 10;
        while (num > 0) {
            if (prevcurrent == -1) {
                prevcurrent = num % 10;
                num = num / 10;
                continue;
            }
            int currvalue = num % 10;
            if ((prevcurrent > currvalue && prevcurrent > lastdigit)
                    || (prevcurrent < currvalue && prevcurrent < lastdigit)) {
                waiviness++;
            }
            lastdigit = prevcurrent;
            prevcurrent = num % 10;
            num = num / 10;
        }
        return waiviness;
    }

    public int totalWaviness(int num1, int num2) {
        int ans = 0;
        for (int i = num1; i <= num2; i++) {
            int l = countpeakValley(i);
            ans = ans + l;
        }
        return ans;
    }
}