leetcode 191競賽

5425. 切割後面積最大的蛋糕

 

矩形蛋糕的高度爲 h 且寬度爲 w,給你兩個整數數組 horizontalCuts 和 verticalCuts,其中 horizontalCuts[i] 是從矩形蛋糕頂部到第  i 個水平切口的距離,類似地, verticalCuts[j] 是從矩形蛋糕的左側到第 j 個豎直切口的距離。

請你按數組 horizontalCuts 和 verticalCuts 中提供的水平和豎直位置切割後,請你找出 面積最大 的那份蛋糕,並返回其 面積 。由於答案可能是一個很大的數字,因此需要將結果對 10^9 + 7 取餘後返回。

 

示例 1:

輸入:h = 5, w = 4, horizontalCuts = [1,2,4], verticalCuts = [1,3]
輸出:4 
解釋:上圖所示的矩陣蛋糕中,紅色線表示水平和豎直方向上的切口。切割蛋糕後,綠色的那份蛋糕面積最大。
示例 2:

輸入:h = 5, w = 4, horizontalCuts = [3,1], verticalCuts = [1]
輸出:6
解釋:上圖所示的矩陣蛋糕中,紅色線表示水平和豎直方向上的切口。切割蛋糕後,綠色和黃色的兩份蛋糕面積最大。
示例 3:

輸入:h = 5, w = 4, horizontalCuts = [3], verticalCuts = [3]
輸出:9

摘要:分別求出橫向和縱向的最大最小間隔,之後乘積取餘就是所求

class Solution {
    public int maxArea(int h, int w, int[] horizontalCuts, int[] verticalCuts) {
        
        int mod = (int) 1e9+7;
        Arrays.sort(horizontalCuts);
        Arrays.sort(verticalCuts);
            
        long hmax=horizontalCuts[0];
        
        if(horizontalCuts.length==1)
        {
            hmax=Math.max(horizontalCuts[0],h-horizontalCuts[0]);
        }
        else
        {
            
        
        for(int i=1;i<horizontalCuts.length;i++)
        {
            if(horizontalCuts[i]-horizontalCuts[i-1]>hmax)
            {
                hmax=horizontalCuts[i]-horizontalCuts[i-1];
            }
        }
        
        if(h-horizontalCuts[horizontalCuts.length-1]>hmax)
        {
            hmax=h-horizontalCuts[horizontalCuts.length-1];
        }
        }
        
         long vmax=verticalCuts[0];
        
        if(verticalCuts.length==1)
        {
            vmax=Math.max(verticalCuts[0],w-verticalCuts[0]);
        }
        else
        {
            
        
        for(int i=1;i<verticalCuts.length;i++)
        {
            if(verticalCuts[i]-verticalCuts[i-1]>=vmax)
            {
                vmax=verticalCuts[i]-verticalCuts[i-1];
            }
        }
        
        if(w-verticalCuts[verticalCuts.length-1]>=vmax)
        {
            vmax=w-verticalCuts[verticalCuts.length-1];
        }
        }
        
        return  (int) ((hmax * vmax) % mod);
    }
}

5426. 重新規劃路線

class Solution {
    public int minReorder(int n, int[][] connections) {
           
        int count=0;
        Set<Integer> list=new HashSet<>();
        list.add(0);
        for(int i=0;i<connections.length;i++)
        {
           if(list.contains(connections[i][1]))
           {
              list.add(connections[i][0]);
           }
           else if(list.contains(connections[i][0]))
           {
               count++;
               list.add(connections[i][1]);
               
           }
        }
        return count;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章