1342.将数字变成0的操作次数-简单
题目描述:
给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。
题解:
只会模拟。官方题解又是位运算,确实还不熟,虽然能看懂但是总是想不到要用
代码(Go):
func numberOfSteps(num int) int {
flag := 0
for num != 0{
if num%2 == 0{
num = num/2
flag++
}else{
num--
flag++
}
}
return flag
}
2180.统计各位数字之和为偶数的整数个数-简单
题目描述:
给你一个正整数 num ,请你统计并返回 小于或等于 num 且各位数字之和为 偶数 的正整数的数目。
正整数的 各位数字之和 是其所有位上的对应数字相加的结果。
题解:
只会暴力解,这题没有官方题解,不知道什么情况,但是这题我直接暴力解时间击败了100%用户,不知道是不是只能暴力解
代码(Go):
func countEven(num int) int {
flag := 0
for i := 1;i <= num;i++{
temp := 0
j := i
for j > 0{
temp += j%10
j = j/10
}
if temp%2 == 0{
flag++
}
}
return flag
}
2379. 得到 K 个黑块的最少涂色次数-简单
题目描述:
给你一个长度为 n 下标从 0 开始的字符串 blocks ,blocks[i] 要么是 ‘W’ 要么是 ‘B’ ,表示第 i 块的颜色。字符 ‘W’ 和 ‘B’ 分别表示白色和黑色。
给你一个整数 k ,表示想要 连续 黑色块的数目。
每一次操作中,你可以选择一个白色块将它 涂成 黑色块。
请你返回至少出现 一次 连续 k 个黑色块的 最少 操作次数。
题解:
滑动窗口,统计k个块中白色块的个数
代码(Go):
func minimumRecolors(blocks string, k int) int {
p,q := 0,0
sum := 0
for i := 0;i < k;i++{
if blocks[q] == 'W'{
sum++
}
q++
}
temp := sum
for q < len(blocks){
if blocks[q] == 'W'{
temp++
}
q++
if blocks[p] == 'W'{
temp--
}
p++
if temp < sum{
sum = temp
}
}
return sum
}
1710. 卡车上的最大单元数-简单
题目描述:
请你将一些箱子装在 一辆卡车 上。给你一个二维数组 boxTypes ,其中 boxTypes[i] = [numberOfBoxesi, numberOfUnitsPerBoxi] :
numberOfBoxesi 是类型 i 的箱子的数量。
numberOfUnitsPerBoxi 是类型 i 每个箱子可以装载的单元数量。
整数 truckSize 表示卡车上可以装载 箱子 的 最大数量 。只要箱子数量不超过 truckSize ,你就可以选择任意箱子装到卡车上。
返回卡车可以装载 单元 的 最大 总数。
题解:
每次遍历取出最大箱子并记录个数,与取箱子数比较,若还可以取则继续
代码(Go):
func maximumUnits(boxTypes [][]int, truckSize int) int {
max := 0
locate := 0
sum := 0
for{
for i,v := range boxTypes{
if v[1] > max{
max = v[1]
locate = i
}
}
if truckSize <= boxTypes[locate][0]{
return sum + truckSize * max
}else{
truckSize = truckSize - boxTypes[locate][0]
sum = sum + max * boxTypes[locate][0]
boxTypes[locate][1] = 0
max = 0
}
}
return 0
}
总结
滑动窗口的那个题还想了一会,否定了好几种方法才想到。今天的题实际上是昨天做好了的,因为今天计划出去玩所以提前准备好了,出去玩也不能断更