Advertisement
Ann0831

leetcode42

Jul 23rd, 2021
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.38 KB | None | 0 0
  1. int trap(int* height, int heightSize){
  2.     int *max=(int*)malloc(heightSize*sizeof(int));
  3.     int *maxpos=(int*)malloc(heightSize*sizeof(int));
  4.     int mx=-1;
  5.     int mxpos=-1;
  6.     int ans=0;
  7.     for(int i=heightSize-1;i>=0;i--){
  8.         if(height[i]>mx){
  9.             mx=height[i];
  10.             max[i]=mx;
  11.             mxpos=i;
  12.             maxpos[i]=i;
  13.         }else{
  14.             max[i]=mx;
  15.             maxpos[i]=mxpos;
  16.         }
  17.        
  18.     }
  19.  
  20.     for (int i=0;i<heightSize;i++){
  21.         //printf("%d %d\n",max[i],maxpos[i]);
  22.     }
  23.     int i=0;
  24.     int j=0;
  25.     while(i<heightSize-1){
  26.        
  27.         mx=height[i];
  28.         //printf("mx=%d\n",mx);
  29.         if(max[i+1]>=mx){
  30.              i++;
  31.             while(height[i]<mx&&i<heightSize-1){
  32.                 //printf("%d凹槽ans+=%d,mx=%d\n",i,-height[i]+mx,mx);
  33.                 ans+=mx-height[i];
  34.                 i++;            
  35.             }
  36.         }else{
  37.             j=i;
  38.             //printf("hitj\n");
  39.             while(i<maxpos[j+1]&&i<heightSize-1){
  40.                 i++;
  41.                 //printf("ans+=%d\n",max[j+1]-height[i]);
  42.                 ans+=max[j+1]-height[i];
  43.             }
  44.            
  45.         }
  46.        
  47.     }
  48.     int m=0;
  49.     for (int j=0;j<30;j++){
  50.         m-=1000;
  51.         for (int n=0;n<1000;n++){
  52.                 m+=1;
  53.         }
  54.     }
  55.     printf("%d",m);
  56.     return ans;
  57.    
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement