📜  找出给定数字的斜率

📅  最后修改于: 2021-05-04 08:42:57             🧑  作者: Mango

找到给定数字num的斜率。数字的斜率是其中最小和最大数字的计数。如果数字小于其前后的数字,则称为最小值。类似地,如果一个数字大于其前后的数字,则称该数字为最大值。

例子:

Input : 1213321
Output : 2
1213321- The highlighted digit '2' is a maxima and
highlighted digit '1' is a minima.

Input : 273299302236131
Output : 6

资料来源:巴克莱面试经验(在校园内)。

方法:从第二个数字到最后一个第二个数字遍历给定数字的数字。对于每个数字,请检查该数字是大于还是小于其前后的数字。获取此类数字的计数。

C++
// C++ implementation to find slope of a number
#include 
  
using namespace std;
  
// function to find slope of a number
int slopeOfNum(string num, int n)
{
    // to store slope of the given
    // number 'num'
    int slope = 0;
  
    // loop from the 2nd digit up to the 2nd last digit
    // of the given number 'num'
    for (int i = 1; i < n - 1; i++) {
  
        // if the digit is a maxima
        if (num[i] > num[i - 1] && num[i] > num[i + 1])
            slope++;
  
        // if the digit is a minima
        else if (num[i] < num[i - 1] && num[i] < num[i + 1])
            slope++;
    }
  
    // required slope
    return slope;
}
  
// Driver program to test above
int main()
{
    string num = "1213321";
    int n = num.size();
    cout << "Slpoe = "
         << slopeOfNum(num, n);
    return 0;
}


Java
// Java implementation to 
// find slope of a number
import java.io.*;
  
class GFG 
{
      
    // function to find
    // slope of a number
    static int slopeOfNum(String num, int n)
    {
        // to store slope of the 
        // given number 'num'
        int slope = 0;
      
        // loop from the 2nd digit 
        // up to the 2nd last digit
        // of the given number 'num'
        for (int i = 1; i < n - 1; i++)
        {
      
            // if the digit is a maxima
            if (num.charAt(i) > num.charAt(i - 1) && 
                num.charAt(i) > num.charAt(i + 1))
                slope++;
      
            // if the digit is a minima
            else if (num.charAt(i) < num.charAt(i - 1) && 
                     num.charAt(i) < num.charAt(i + 1))
                slope++;
        }
      
        // required slope
        return slope;
    }
  
    // Driver code
    public static void main (String[] args) 
    {
        String num = "1213321";
        int n = num.length();
        System.out.println("Slope = " + 
                    slopeOfNum(num, n));
    }
}
  
// This code is contributed by Mahadev99


Python 3
# Python 3 implementation to find 
# slope of a number
  
# function to find slope of a number
def slopeOfNum(num, n):
  
    # to store slope of the given
    # number 'num'
    slope = 0
  
    # loop from the 2nd digit up 
    # to the 2nd last digit
    # of the given number 'num'
    for i in range(1, n - 1) :
  
        # if the digit is a maxima
        if (num[i] > num[i - 1] and 
            num[i] > num[i + 1]):
            slope += 1
  
        # if the digit is a minima
        elif (num[i] < num[i - 1] and
              num[i] < num[i + 1]):
            slope += 1
  
    # required slope
    return slope
  
# Driver Code
if __name__ == "__main__":
      
    num = "1213321"
    n = len(num)
    print("Slpoe =", slopeOfNum(num, n))
  
# This code is contributed by ita_c


C#
// C# implementation to 
// find slope of a number
class GFG 
{
  
// function to find slope of a number
static int slopeOfNum(string num, int n)
{
    // to store slope of the 
    // given number 'num'
    int slope = 0;
  
    // loop from the 2nd digit 
    // up to the 2nd last digit
    // of the given number 'num'
    for (int i = 1; i < n - 1; i++)
    {
  
        // if the digit is a maxima
        if (num[i] > num[i - 1] && 
            num[i] > num[i + 1])
            slope++;
  
        // if the digit is a minima
        else if (num[i] < num[i - 1] && 
                 num[i] < num[i + 1])
            slope++;
    }
  
    // required slope
    return slope;
}
  
// Driver code
public static void Main() 
{
    string num = "1213321";
    int n = num.Length;
    System.Console.WriteLine("Slope = " + 
                     slopeOfNum(num, n));
}
}
  
// This code is contributed by mits


PHP
 $num[$i - 1] &&
            $num[$i] > $num[$i + 1])
            $slope++;
  
        // if the digit is a minima
        else if ($num[$i] < $num[$i - 1] && 
                 $num[$i] < $num[$i + 1])
            $slope++;
    }
  
    // required slope
    return $slope;
}
  
// Driver Code
$num = "1213321";
$n = strlen($num);
echo "Slpoe = " . slopeOfNum($num, $n);
  
// This code is contributed
// by Akanksha Rai
?>


输出:

Slope = 2

时间复杂度: O(n)。