每日打卡

2021-12-13 807. 保持城市天际线

2021-12-13  本文已影响0人  16孙一凡通工

用到了二重数组转换成一重数组的思路,其他的就没啥了,调试用了不少的时间。

import (
    "fmt"
)
func maxIncreaseKeepingSkyline(grid [][]int) int {


      // 每一项保证小于两个最大值

      col_max,row_max:=0,0;
      var col_max_arr []int;
       var ro_max_arr []int;
    //   二重循环变成一重循环的模板
    //  0,1
    // 1,0 2,0
    // 3,7,11,15
      for i:=0;i<len(grid)*len(grid[0]);i++{
      if grid[i/len(grid)][i%len(grid)]>col_max{
          col_max=grid[i/len(grid)][i%len(grid)]
      }
       if grid[i%len(grid[0])][i/len(grid[0])]>row_max{
          row_max=grid[i%len(grid[0])][i/len(grid[0])]
      }
    //   四次插入,三次替换
         
     
       if (i+1)%len(grid)==0{
           
              col_max_arr=append(col_max_arr,col_max);
              if i+1==len(grid)*len(grid[0]){
                  col_max=0;  
              }else{
                           col_max=grid[i/len(grid)+1][0];
              
              }
            
               
          }
           if (i+1)%len(grid[0])==0 {
               ro_max_arr=append(ro_max_arr,row_max);
                if i+1==len(grid)*len(grid[0]){
                row_max=0;  
              }else{
               row_max=grid[0][(i)/len(grid[0])+1];
              }
            
          }

        
          
      }
    //   fmt.Println(col_max_arr)
    //   fmt.Println(ro_max_arr)
      col_max,row_max=0,0;

 
        // col_tmp,row_tmp:=0,0;
        res:=0;
       for i:=0;i<len(grid);i++{
           for j:=0;j<len(grid[0]);j++{
               if grid[i][j]<col_max_arr[i] && grid[i][j]<ro_max_arr[j]{
               res+=min(col_max_arr[i],ro_max_arr[j])-grid[i][j];
              
               }
                // fmt.Println(res);

           }
         

       }
       return res;

}
func min(num1 int,num2 int)int{
    if num1<num2{
        return num1;
    }
    return num2;
}
上一篇 下一篇

猜你喜欢

热点阅读