当前位置:   article > 正文

[华为OD]C卷 给定一个数组,数组中的每个元素代表该位置的海拔高度 山脉的个数 200

[华为OD]C卷 给定一个数组,数组中的每个元素代表该位置的海拔高度 山脉的个数 200

题目:

给定一个数组,数组中的每个元素代表该位置的海拔高度。0表示平地,>=1时表示属于某个 

山峰,山峰的定义为当某个位置的左右海拔均小于自己的海拔时,该位置为山峰。数组起始位 

置计算时可只满足一边的条件。

输入描述

一个整数数组

输出描述

输出符合条件的山峰的个数

示例1:

输入:

[0,1,2,3,2,41]

输出:

2

示例2:

输入:

[3,0,3,4,11]

输出:

2

题解:

题目不难,就是数组轮询判断就可以了,一个是注意两个边界判断,另一个就是判断山峰值需要>=1

代码:

  1. public class MountCount {
  2. public static void main(String[] args) {
  3. Scanner sc = new Scanner(System.in);
  4. if (!sc.hasNextLine()) {
  5. return;
  6. }
  7. String stringArr = sc.nextLine();
  8. String[] stringArray = stringArr.substring(1, stringArr.length() - 1).split(",");
  9. int mountCount = 0;
  10. for (int i = 0; i < stringArray.length; i++) {
  11. if (i == 0 && stringArray.length >= 2) { //左边界判断
  12. if (Integer.valueOf(stringArray[i]) >= 1 && Integer.valueOf(stringArray[i]) > Integer.valueOf(stringArray[i + 1])) {
  13. mountCount++;
  14. continue;
  15. }
  16. }
  17. if(i == 0 && stringArray.length == 1){ //只有一个值判断
  18. if(Integer.valueOf(stringArray[i]) >= 1){
  19. mountCount =1;
  20. continue;
  21. }
  22. }
  23. // 中间值判断
  24. if (i + 1 <= stringArray.length - 1) {
  25. if (Integer.valueOf(stringArray[i]) >= 1 && Integer.valueOf(stringArray[i]) > Integer.valueOf(stringArray[i + 1])
  26. && Integer.valueOf(stringArray[i]) > Integer.valueOf(stringArray[i - 1])) {
  27. mountCount++;
  28. continue;
  29. }
  30. }
  31. // 右边界判断
  32. if (i == stringArray.length - 1 && Integer.valueOf(stringArray[i]) >= 1 && Integer.valueOf(stringArray[i]) > Integer.valueOf(stringArray[i - 1])) {
  33. mountCount++;
  34. continue;
  35. }
  36. }
  37. System.out.println(mountCount);
  38. }
  39. }

验证:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/512395
推荐阅读
相关标签
  

闽ICP备14008679号