2020-09-21每日复习

119.杨辉三角II

在这里插入图片描述
分析

  • 创建一个List集合,创建一个索引index,表示当前处理到杨辉三角中的第几行。
  • 对index进行循环,每次循环先往集合中存入一个1,之后对集合中的数据从后往前进行处理(最后一个值为1,不用处理,从倒数第二位开始处理)。集合中当前索引的值等于当前索引加上前一个索引的值,依次往前循环。
class Solution{
    public List<Integer> getRow(int rowIndex){
        List<Integer> res = new ArrayList<>();
        int index = 0;
        while(index <= rowIndex){
            res.add(1);
            for(int i = index - 1; i > 0; i--){
                res.set(i, res.get(i) + res.get(i - 1));
            }
            index++;
        }
        return res;
    }
}

在这里插入图片描述

1170.比较字符串最小字母出现频次

在这里插入图片描述
分析

  • 先构造f(s)方法,计算非空字符串中最小字母出现的频次。设一个有26位的数组,对字符串每一个字符进行计数,将字符-‘a’,得到索引,并在数组中相应索引位置加1,循环完毕后,对数组进行遍历,将第一个不是0的数组值返回,即得到最小字母的频次。
  • 构造一个结果数组,存放最后的结果。创建一个存放词汇表每个词汇中最小字母出现频次的次数的数组,该数组的索引为最小字母出现的频次,索引对应的数组值为出现该频次的次数,如biao[3] = 2:最小字母出现频次为3的词汇有2个。从后往前循环该数组,将后一个值加到前一个上。这是因为小于当前值时,也一定小于当前值后面的那些值,故从后往前进行累加。
  • 最后循环待查表,每个字符串的最小字母频次即为biao数组中相应索引加1的数组值;如f(queries[i]) = 3 < 4,即等于biao[4]的值。
class Solution {
    public int[] numSmallerByFrequency(String[] queries, String[] words) {
        int[] res = new int[queries.length];
        int[] biao = new int[12];
        for(String word : words){
            biao[f(word)]++;
        }
        for(int i = 10; i >= 0; i--){
            biao[i] += biao[i + 1]; 
        }
        for(int i = 0; i < queries.length; i++){
            res[i] = biao[f(queries[i]) + 1];
        }
        return res;
    }
    public int f(String s){
        int[] arr = new int[26];
        for(char c : s.toCharArray()){
            arr[c - 'a']++;
        }
        for(int i = 0; i < 26; i++){
            if(arr[i] != 0) return arr[i];
        }
        return -1;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值