从零开始的力扣刷题记录-第四十五天

1491. 去掉最低工资和最高工资后的工资平均值-简单

题目描述:
给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。
请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。

题解:
直接遍历一遍数组找到最大值和最小值,在遍历过程中求和最后减去最大最小值后求平均。虽然很简单但是竟然踩了个小坑,第一次在结果上转float64提交没过,得在求平均之前在被除数和除数前加float64

代码(Go):

func average(salary []int) float64 {
    low,high := salary[0],salary[0]
    sum := 0
    for _,v := range salary{
        if v < low {
            low = v
        }else if v > high {
            high = v
        }
        sum += v
    }
    return float64((sum - low - high))/float64((len(salary) - 2))
}

LCP 01. 猜数字-简单

题目描述:
小A 和 小B 在玩猜数字。小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜。他们一共进行三次这个游戏,请返回 小A 猜对了几次?
输入的guess数组为 小A 每次的猜测,answer数组为 小B 每次的选择。guess和answer的长度都等于3。

题解:
点开之前没想到这么简单,我提名这道题是全力扣最简单的题

代码(Go):

func game(guess []int, answer []int) int {
    temp := 0
    if guess[0] == answer[0]{
        temp++
    }
    if guess[1] == answer[1]{
        temp++
    }
    if guess[2] == answer[2]{
        temp++
    }
    return temp
}

1071. 字符串的最大公因子-简单

题目描述:
对于字符串 s 和 t,只有在 s = t + … + t(t 自身连接 1 次或多次)时,我们才认定 “t 能除尽 s”。
给定两个字符串 str1 和 str2 。返回 最长字符串 x,要求满足 x 能除尽 str1 且 x 能除尽 str2 。

题解:
如果有最大公因子那么两个字符串先后拼接得到的结果一定是一样的,所以可以通过这个方法先排除一部分,接下来寻找两个字符串长度的最大公因数,然后取出这个长度的字符串进行循环拼接,如果两个字符串都可以由这个长度的字符串拼接出来,那么这个字符串就是最大公因子

代码(Go):

func gcdOfStrings(str1 string, str2 string) string {
    if str1 + str2 != str2 + str1{
        return ""
    }
    len1 := len(str1)
    len2 := len(str2)
    i := len1
    for i > 0{
        if len1%i == 0 && len2%i == 0{
            break
        }
        i--
    }
    temp := str1[:i]
    flag1,flag2 := 0,0
    for j := temp;len(j) <= len1;j = j + temp{
        if j == str1{
            flag1 = 1
        }
    }
    for k := temp;len(k) <= len2;k = k + temp{
        if k == str2{
            flag2 = 1
        }
    }
    if flag1 == 1 && flag2 == 1{
        return temp
    }
    return ""
}

2559. 统计范围内的元音字符串数-中等

题目描述:
给你一个下标从 0 开始的字符串数组 words 以及一个二维整数数组 queries 。
每个查询 queries[i] = [li, ri] 会要求我们统计在 words 中下标在 li 到 ri 范围内(包含 这两个值)并且以元音开头和结尾的字符串的数目。
返回一个整数数组,其中数组的第 i 个元素对应第 i 个查询的答案。
注意:元音字母是 ‘a’、‘e’、‘i’、‘o’ 和 ‘u’ 。

题解:
前缀和思想,用一个数组统计第i个字符串前共有多少元音字符串,再遍历查询数组在统计数组中取值,用第二个值减去第一个值即可

代码(Go):

func vowelStrings(words []string, queries [][]int) []int {
    sce := make([]int,len(words))
    temp := 0
    for i,v := range words{
        if isvowelletter(v[0]) && isvowelletter(v[len(v) - 1]){
            temp++
        }
        sce[i] = temp
    }
    re := make([]int,len(queries))
    for i,v := range queries{
        if v[0] == 0{
            re[i] = sce[v[1]] - 0
        }else{
            re[i] = sce[v[1]] - sce[v[0] - 1]
        }
    }
    return re
}

func isvowelletter(i byte) bool {
    if i == 'a' || i == 'e' || i == 'i' || i == 'o' || i == 'u'{
        return true
    }
    return false
}

总结

今天比较顺利,中等题用的前缀和思想之前遇到过

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值