找到给定数字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)。