A.每日一题:LeetCode 1732题+1189题

题目链接:1732. 找到最高海拔(简单)

算法原理:

解法:遍历

0ms击败100.00%

时间复杂度O(N)

思路很简单,就类似"差分"的思想:A.每日一题------2536. 子矩阵元素加 1
当前"山高"=前一个数+差值,我们可以用一个临时变量 t 存储到现在的山高,然后用 mx 记录最大值,一次遍历即可解决

Java代码:

java 复制代码
class Solution {
    //1732. 找到最高海拔
    public int largestAltitude(int[] gain) {
        int t=0;
        int mx=t;
        for(int x:gain){
            t+=x;
            mx=Math.max(mx,t);
        }
        return mx;
    }
}

题目链接:1189. "气球" 的最大数量(简单)

算法原理:

解法:统计

4ms击败41.91%

时间复杂度O(N)

思路非常简单,为了能凑出最多的 balloon,我们只需要统计这涉及到字符出现多少次,然后取最小值即可

需要注意的是,字符 l 和 字符 o 出现了两次,取最小值前需要先 / = 2

Java代码:

java 复制代码
class Solution {
    //1189. "气球" 的最大数量
    public int maxNumberOfBalloons(String text) {
        int b=0,a=0,l=0,o=0,n=0;
        for(int i=0;i<text.length();i++){
            char c=text.charAt(i);
            if(c=='b') b++;
            else if(c=='a') a++;
            else if(c=='l') l++;
            else if(c=='o') o++;
            else if(c=='n') n++;
        }
        l/=2;o/=2;
        return Math.min(b,Math.min(a,Math.min(l,Math.min(o,n))));
    }
}