240512.LeetCode——2960.统计已测试设备

题目描述

给你一个长度为 n 、下标从 0 开始的整数数组 batteryPercentages ,表示 n 个设备的电池百分比。

你的任务是按照顺序测试每个设备 i,执行以下测试操作:

  • 如果 batteryPercentages[i] 大于 0
    • 增加 已测试设备的计数。
    • 将下标在 [i + 1, n - 1] 的所有设备的电池百分比减少 1,确保它们的电池百分比 不会低于 0 ,即 batteryPercentages[j] = max(0, batteryPercentages[j] - 1)
    • 移动到下一个设备。
  • 否则,移动到下一个设备而不执行任何测试。

返回一个整数,表示按顺序执行测试操作后 已测试设备 的数量。

EX1.

6f8e785b882f4920a4be7c60b84dfa99.jpg

 EX2.

7a6600c4954744ada2bd749f16d047f0.jpg

提示

  • 1 <= n == batteryPercentages.length <= 100
  • 0 <= batteryPercentages[i] <= 100

代码实现

C语言

 

int countTestedDevices(int* batteryPercentages, int batteryPercentagesSize)
{
    int i;
    int j;//循环变量
    int cnt=0;//计数器以统计已测试设备,记得初始化!!!(浪费了一次提交机会...)
    for(i=0;i<batteryPercentagesSize;i++)//力扣给出的Size表示的是大小,下标在Size-1,<Size-1表示遍历到最后一个下标
    {
        if(batteryPercentages[i]==0)//如果电量是0,跳过该设备,即跳过该次循环
        {
            continue;
        }

        //如果没被跳过循环,要执行下边语句,这样写省略了一些选择逻辑
        cnt++;//测试设备数量加一
        for(j=i+1;j<batteryPercentagesSize;j++)//实现对之后的设备进行电量损耗
        {
            if(batteryPercentages[j]>0)//保证电量>=0
            {
                batteryPercentages[j]--;
            }
        }
    }
    return cnt;//最后返回已测试设备数量
}

执行情况

ed1f99c07382420e9322b05c194898d8.jpg

 思路

       第一次读题基本有一点想法了,看了示例基本能够理解,能够自己写出一个示例输入和草稿计算出示例输出,然后还是想到了循环结构(循环这玩意在算法好像还蛮重要的),而且双重循环出现尤为频繁,这道题蛮有意思的一点在于它的第二重循环需要结合判断逻辑,用于对测试设备之后的设备进行电量损耗,所以起点应该设置为当前设备。但总的来说这道题应该还算简单题...毕竟我两分钟就有了思路而且几分钟就写完了

总结

       这个题我还是没有选择去继续优化内存使用和运行速度,因为实在是太简单了...题解区倒是有几个大佬写出双百代码...但可读性真的堪忧...我就先不放在这里了。还是瞎扯几句...昨天晚上用于放松的,昨晚原定的力扣计划也没实现,看看今天能不能补上?

      继续沉淀。(最近又开始喜欢看励志视频了是怎么回事...)

 

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值