golang力扣leetcode第 294 场周赛

简介: golang力扣leetcode第 294 场周赛

第294场周赛

第294场周赛

前言

每周差不多稳定3题,这T4也忒难了

第一题

2278.字母在字符串中的百分比

2278.字母在字符串中的百分比

题解

题目:某个字母出现在字符串中的百分比

思路:用库函数一行

代码

func percentageLetter(s string, letter byte) int {
  return strings.Count(s, string(letter)) * 100 / len(s)
}

第二题

2279.装满石头的背包的最大数量

2279.装满石头的背包的最大数量

题解

题目:给一个容量数组,和已经装了多少的数组,,还有一个additionalRocks可以给第一个数组用,问如何分配additionalRocks,能使装满的元素最多

思路:

1.将容量数组减去已经装的数组,就是还能装多少的数组
2.排序还能装多少的数组,从小到大
3.依次将additionalRocks给元素

代码

func maximumBags(capacity []int, rocks []int, additionalRocks int) int {
  ans := 0
  for i := range capacity {
    capacity[i] -= rocks[i]
  }
  sort.Ints(capacity)
  for _, v := range capacity {
    if additionalRocks < v {
      break
    }
    additionalRocks -= v
    ans++
  }
  return ans
}

第三题

2280.表示一个折线图的最少线段数

2280.表示一个折线图的最少线段数

题解

题目:给你多个坐标,组成一个折线图,问折线最少有几个

思路:

1.按照x坐标排序
2.除法会有误差,改用乘法
3.设刚开始斜率为1/0
(y2-y1)/(x2-x1)=k
设y2-y1=dy   x2-x1=dx
k=dy/dx
那么判断两条线斜率是否相等就是判断k1 == k2
dy1/dx1==dy2/dx2 --> dy1 * dx 2 == dx1 * dy 2
由于折线必定是连续的,所以即使出现A,B,C三段,A和C同斜率也没事
因为C判断k的时候,是和B的斜率取判断

代码

func minimumLines(stockPrices [][]int) int {
  sort.Slice(stockPrices, func(i, j int) bool {
    return stockPrices[i][0] < stockPrices[j][0]
  })
  px, py :=0,1
  ans := 0
  for i := 1; i < len(stockPrices); i++ {
    y2, x2 := stockPrices[i][1], stockPrices[i][0]
    y1, x1 := stockPrices[i-1][1], stockPrices[i-1][0]
    dx, dy := x2-x1, y2-y1
    if dx*py != dy*px {
      ans++
      px, py = dx, dy
    }
  }
  return ans
}


目录
相关文章
|
17天前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
22天前
|
算法 Java Go
【经典算法】LeetCode 67. 二进制求和(Java/C/Python3/Golang实现含注释说明,Easy)
【经典算法】LeetCode 67. 二进制求和(Java/C/Python3/Golang实现含注释说明,Easy)
9 2
|
22天前
|
算法 Java Go
【经典算法】LeetCode 69. x 的平方根(Java/C/Python3/Golang实现含注释说明,Easy)
【经典算法】LeetCode 69. x 的平方根(Java/C/Python3/Golang实现含注释说明,Easy)
8 1
|
22天前
|
算法 Java Go
【经典算法】LeetCode 64. 最小路径和(Java/C/Python3/Golang实现含注释说明,Easy)
【经典算法】LeetCode 64. 最小路径和(Java/C/Python3/Golang实现含注释说明,Easy)
12 1
|
17天前
|
算法 数据可视化 数据挖掘
最佳加油站选择算法:解决环路加油问题的两种高效方法|LeetCode力扣134
最佳加油站选择算法:解决环路加油问题的两种高效方法|LeetCode力扣134
|
17天前
|
存储 算法 数据可视化
LeetCode 力扣题目:买卖股票的最佳时机 IV
LeetCode 力扣题目:买卖股票的最佳时机 IV
|
17天前
|
存储 算法 数据可视化
LeetCode 力扣题目:买卖股票的最佳时机 III
LeetCode 力扣题目:买卖股票的最佳时机 III
|
17天前
|
存储 缓存 算法
LeetCode力扣题目111:多种算法对比实现二叉树的最小深度
LeetCode力扣题目111:多种算法对比实现二叉树的最小深度
|
22天前
|
算法 Java Go
【经典算法】LeetCode 35. 搜索插入位置(Java/C/Python3/Golang实现含注释说明,Easy)
【经典算法】LeetCode 35. 搜索插入位置(Java/C/Python3/Golang实现含注释说明,Easy)
8 0
|
1月前
|
机器学习/深度学习 canal NoSQL
从C语言到C++_12(string相关OJ题)(leetcode力扣)
从C语言到C++_12(string相关OJ题)(leetcode力扣)
31 0