当前位置:   article > 正文

2023华为od机试C卷【山脉的个数】C语言实现_华为 od 机试 c卷c语言

华为 od 机试 c卷c语言

目录

题目

思路

Code


题目

给定一个数组,数组中的每个元素代表该位置的海拔高度。0表示平地,>=1时表示属于某个山峰,山峰的定义为当某个位置的左右海拔均小于自己的海拔时,该位置为山峰。数组起始位置计算时可只满足一边的条件。
输入描述
一个整数数组
输出描述
输出符合条件的山峰的个数

示例1:
输入:
 [0,1,2,3,2,4]
输出:
2

示例2:

输入:

 [3,0,3,4,1]

输出:

2

函数:

  1. int validMountainCount(int* arr, int arrSize){
  2. }

思路

1:此题为leetcode模式,实现给定的函数即可。

2:题目还是比较简单的,没有什么复杂的算法,直接暴力的遍历每个数组元素,判断每个位置与其左右位置的高度关系即可。

Code

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <stdbool.h>
  5. #include <math.h>
  6. #include <limits.h>
  7. #include <float.h>
  8. #include <regex.h>
  9. #include <ctype.h>
  10. #define CEILING_POS(X) ((X-(int)(X)) > 0 ? (int)(X+1) : (int)(X))
  11. #define CEILING_NEG(X) ((X-(int)(X)) < 0 ? (int)(X-1) : (int)(X))
  12. #define CEILING(X) ( ((X) > 0) ? CEILING_POS(X) : CEILING_NEG(X) )
  13. #define MIN(a, b) ((a) < (b)) ? (a) : (b)
  14. #define MAX(a, b) ((a) > (b)) ? (a) : (b)
  15. int cmpfunc (const void * a, const void * b) {
  16. return ( *(int*)a - *(int*)b );
  17. }
  18. int comp_str(const void* a, const void* b) {
  19. return strcmp(*(char**)a, *(char**)b);
  20. }
  21. //qsort(dp, m+1, sizeof(int), cmpfunc);
  22. /*
  23. char input[200000];
  24. fgets(input, 200000, stdin);
  25. //逗号分隔
  26. char* token = strtok(input, ",");
  27. int v[1000];
  28. int count1 = 0;
  29. while (token != NULL) {
  30. v[count1++] = atoi(token);
  31. token = strtok(NULL, ",");
  32. }*/
  33. int validMountainCount(int* arr, int arrSize){
  34. int result = 0;
  35. int i=0;
  36. while(true){
  37. if(i>=arrSize){
  38. return result;
  39. } else {
  40. //左边界
  41. if(i==0){
  42. if (arr[i+1] < arr[i]){
  43. result += 1;
  44. }
  45. } else if (i==arrSize-1){
  46. if (arr[i-1] < arr[i]){
  47. result += 1;
  48. }
  49. } else {
  50. if(arr[i-1] < arr[i] && arr[i+1] < arr[i]){
  51. result += 1;
  52. }
  53. }
  54. }
  55. i+=1;
  56. }
  57. }
  58. void main(){
  59. char input[200000];
  60. fgets(input, 200000, stdin);
  61. //逗号分隔
  62. char* token = strtok(input, ",");
  63. int v[1000];
  64. int count1 = 0;
  65. while (token != NULL) {
  66. v[count1++] = atoi(token);
  67. token = strtok(NULL, ",");
  68. }
  69. printf("%d",validMountainCount(v, count1));
  70. }

【华为od机试真题Python+JS+Java合集】【超值优惠】:Py/JS/Java合集

【华为od机试真题Python】:Python真题题库

【华为od机试真题JavaScript】:JavaScript真题题库

【华为od机试真题Java】:Java真题题库

【华为od机试真题C++】:C++真题题库

【华为od机试真题C语言】:C语言真题题库

【华为od面试手撕代码题库】:面试手撕代码题库

【华为od机试面试交流群:830285880】

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

闽ICP备14008679号