【Leecode笔记之C语言】第五周(10.5-10.11)

本文是LeetCode C语言解题笔记,涵盖了【DAY 12】解压缩编码列表,【DAY 13】将数字变成0的操作次数和有多少小于当前数字的数字,【DAY 14】访问所有点的最小时间和统计位数为偶数的数字,以及【DAY 15】矩阵对角线元素的和和速算机器人等题目,详细分析了每道题目的解题思路和难点。
摘要由CSDN通过智能技术生成

上周咸鱼了,这周再次重新做人!

【DAY 12】解压缩编码列表

在这里插入图片描述

分析:奇数位的数字用来判断重复数量,偶数位的数字用来作为重复数字;然后还要连接各个子列表。
难点在于,1.如何将多个子数组串联在一起?(控制频次和遍历原数组可以用双层for循环完成。用python应该会简单多了,用V有点麻烦。)2.如何确定目标数组的长度?
解决:首先确定目标数组的长度,就是两步,原数组的偶数位,偶数位的值控制频次。

int* decompressRLElist(int* nums, int numsSize, int* returnSize){
   
    *returnSize = 0;
    int len = numsSize / 2;
    for(int i = 0;i < len;i++){
   
        *returnSize += nums[2*i];
    }
    int index = 0;
    int *ret = (int *) calloc (*returnSize,sizeof(int));
    for(int k = 0;k < numsSize;k+=2){
   
        for(int j = 0;j < nums[k];j++){
   
            ret[index++] = nums[k+1]; 
        }
    }
    return ret;
}

【DAY 13】

第一题:将数字变成0的操作次数

在这里插入图片描述

分析:思路挺简单的,只要num不为0,如果是奇数就-1,如果是偶数就/2,然后定义一个计数器统计次数即可。

int numberOfSteps (int num){
   
    int count = 0;
    while(num 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值