当前位置:   article > 正文

Java菜鸡实现乐鑫笔试编程题_乐鑫java机试题

乐鑫java机试题

题意:存在一根电线杆,可以是第一根或者最后一根,在该电线杆前的电线杆的高度是不增的,在它之后的电线杆的高度是不减的,请求出最少需要调整多少根电线杆的高度、

输入n+1行
第一行整数n表示电线杆数
剩下n行表示电线杆的高度
10
6 3 4 3 3 4 5 5 4 6
输出2
注意是存在,至少调整的数量、
 

  1. package com.program;
  2. import java.util.Scanner;
  3. public class lexin1 {
  4. public static void main(String[] args){
  5. Scanner sc = new Scanner(System.in);
  6. int num = sc.nextInt();
  7. int[] nums = new int[num];
  8. for(int i=0;i<nums.length;i++)
  9. nums[i]=sc.nextInt();
  10. int min = adjusted(num,nums);
  11. System.out.println(min);
  12. // System.out.println(Arrays.toString(nums));
  13. }
  14. public static int adjusted(int n,int[] a){
  15. int[] dec =new int[n];
  16. // System.out.println(n);
  17. int[] inc =new int[n];
  18. int low = a[0];
  19. for(int i=1;i<n;i++){
  20. if (a[i]>low){
  21. dec[i] = 1;
  22. }else{
  23. low = a[i];
  24. }
  25. }
  26. low = a[n-1];
  27. for(int j=n-2;j>-1;j--){
  28. if(a[j]>low){
  29. inc[j] = 1;
  30. }else{
  31. low = a[j];
  32. }
  33. }
  34. int[] res = new int[n];
  35. // System.out.println(n);
  36. for(int i=0;i<n;i++){
  37. int sum1=0;
  38. int sum2=0;
  39. for(int k=0;k<i;k++){
  40. sum1= sum1+ dec[k];
  41. }
  42. for(int m=i+1;m<n;m++){
  43. sum2= sum2+ inc[m];
  44. }
  45. res[i]= sum1+sum2;
  46. }
  47. int min=res[0];
  48. // System.out.println(res[0]);
  49. for(int i=0;i<n;i++){
  50. if(min>res[i]){
  51. min=res[i];
  52. }
  53. }
  54. return min;
  55. }
  56. }

参考@敲键盘的钢琴师python写法:https://blog.csdn.net/hushaoqiqimingxing/article/details/98245567

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

闽ICP备14008679号