首页 > 其他分享 >【C语言入门】第十四天

【C语言入门】第十四天

时间:2023-10-15 12:03:47浏览次数:32  
标签:入门 returnSize int C语言 第十四天 returnColumnSizes array root returned

【例题1】1260. 二维网格迁移 - 力扣(LeetCode)

/**
 * Return an array of arrays of size *returnSize.
 * The sizes of the arrays are returned as *returnColumnSizes array.
 * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
 */
int** shiftGrid(int** grid, int gridSize, int* gridColSize, int k, int* returnSize, int** returnColumnSizes){
    // 创建数组
    int** p = (int**)malloc(sizeof(int*)*gridSize);
    for(int i = 0;i<gridSize;i++){
        p[i] = (int*)malloc(sizeof(int)*(*gridColSize));
    }
    //实现逻辑
    int i,j;
    for(i=0;i<gridSize;i++){
        for(j=0;j<*gridColSize;j++){
            int value = ((i*(*gridColSize))+j+k)%(gridSize*(*gridColSize));
            p[value/(*gridColSize)][value%(gridSize)] = grid[i][j];
        }
    }
    //确定返回参数
    *returnSize = gridSize;
    *returnColumnSizes = (int*)malloc(sizeof(int)*gridSize);
    for(i=0;i<gridSize;i++){
        (*returnColumnSizes)[i] = *gridColSize;
    }
    return p;
}

【例题2】661. 图片平滑器 - 力扣(LeetCode)

/**
 * Return an array of arrays of size *returnSize.
 * The sizes of the arrays are returned as *returnColumnSizes array.
 * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
 */
int** imageSmoother(int** img, int imgSize, int* imgColSize, int* returnSize, int** returnColumnSizes){
    int i,j;
    // 创建数组
    int** p = (int**)malloc(sizeof(int*)*imgSize);
    for(i=0;i<imgSize;i++){
        p[i] = (int*)malloc(sizeof(int)*(*imgColSize));
    }
    //实现逻辑
    for(i=0;i<imgSize;i++){
        for(j=0;j<*imgColSize;j++){
            // 核心代码
            int sum=0;int fenmu = 0;
            for(int m=i-1;m<=i+1;m++){
                for(int n=j-1;n<=j+1;n++){
                    if(m >=0 && m < imgSize && n>=0 && n<(*imgColSize)){
                        sum+=img[m][n];fenmu++;
                    }
                }
            }
            p[i][j] = (int)(sum*1.0/fenmu);
        }
    }
    //规定返回参数
    *returnSize = imgSize;
    *returnColumnSizes = (int*)malloc(sizeof(int)*imgSize);
    for(i=0;i<imgSize;i++){
        (*returnColumnSizes)[i] = *imgColSize;
    }
    return p;
}

【例题3】1314. 矩阵区域和 - 力扣(LeetCode)

/**
 * Return an array of arrays of size *returnSize.
 * The sizes of the arrays are returned as *returnColumnSizes array.
 * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
 */
int** matrixBlockSum(int** mat, int matSize, int* matColSize, int k, int* returnSize, int** returnColumnSizes){
    // 创建数组
    int** p = (int**)malloc(sizeof(int*)*matSize);
    for(int i=0;i<matSize;i++){
        p[i] = (int*)malloc(sizeof(int)*(*matColSize));
    }
    // 实现逻辑
    for(int i=0;i<matSize;i++){
        for(int j=0;j<(*matColSize);j++){
            int sum = 0;
            for(int m=i-k;m<=i+k;m++){
                for(int n=j-k;n<=j+k;n++){
                    if(m>=0 && m<matSize && n>=0 && n<(*matColSize)){
                        sum += mat[m][n];
                    }
                }
            }
            p[i][j] = sum;
        }
    }
    // 规定返回参数值
    *returnSize = matSize;
    *returnColumnSizes = (int*)malloc(sizeof(int)*matSize);
    for(int i=0;i<matSize;i++){
        (*returnColumnSizes)[i] = *matColSize;
    }
    return p;
}

【例题4】LCP 44. 开幕式焰火 - 力扣(LeetCode)

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int arr[1001];
void transer(struct TreeNode* root){
    if(root == NULL) return;
    arr[root->val] = 1;
    transer(root->left);
    transer(root->right);
}
int numColor(struct TreeNode* root){
    if(root == NULL) return 0;
    memset(arr,0,sizeof(arr));
    transer(root);
    int ans = 0;
    for(int i=0;i<sizeof(arr)/sizeof(int);i++){
        if(arr[i] == 1) ans++;
    }
    return ans;
}

【例题5】397. 整数替换 - 力扣(LeetCode)

int integerReplacement(int n){
    unsigned int m = n;
    if(m==1) return 0;
    if(m%2==0) return 1+integerReplacement(m/2);
    else return 1+integerReplacement(m-1)<1+integerReplacement(m+1)?1+integerReplacement(m-1):1+integerReplacement(m+1);
}


标签:入门,returnSize,int,C语言,第十四天,returnColumnSizes,array,root,returned
From: https://blog.51cto.com/u_16188762/7870254

相关文章

  • 【C语言入门】第十五天
    【例题1】938.二叉搜索树的范围和-力扣(LeetCode)/***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*/intrangeSumBST(structTreeNode*root,intlow,inthigh){......
  • 1+X证书--传感器应用开发初级-C语言点亮LED灯
    #include<CC2530.h>//引入头文件CC2530.h。#defineled1P1_0//宏定义led1为端口P1_0。#defineled2P1_1//宏定义led2为端口P1_1。voidmain(void)//在main函数中进行程序的运行。{P1DIR=(0x01<<0)|(0x01<<1);//定义输出端口。led1=1;//点亮led1灯:1是亮,0是灭。led......
  • 物联网应用与维护搭建入门-准备工作
    1.设置SQLserver配置管理器。 先点击Windows键,找到M的文件,打开列表,找到SQLserver配置管理器。双击打开。进来后我们点击SQLserver网络配置,点击MSSQLSERVER的协议,找到TCP/IP,双击打开。(下面的VIA这个时候要注意看有没有开启,开启了的话我们这个TCP/IP是打不开的)启用......
  • C语言 通过union共存体释放常量指针指向的堆空间
    union共存体中所有成员占用相同的内存空间。因为free函数参数是void*,常量指针是constvoid*,所以free函数释放常量指针时会因类型不同而失败。#include<stdio.h>#include<malloc.h>#include<string.h>typedefunion_const_ptr{constvoid*cp;void*vp;}co......
  • C语言 strdup函数把字符串复制到新空间
    头文件是string.h。根据传入的字符串参数,malloc分配空间并复制,返回首地址,该地址通过free来释放。#include<stdio.h>#include<malloc.h>#include<string.h>intmain(){chara[20]="123";char*b=strdup(a);printf("%s\n",b);free(b);......
  • Kafka 入门教程
     Kafka是分布式发布-订阅消息系统,它最初由LinkedIn公司开发,使用Scala语言编写,之后成为Apache项目的一部分。在Kafka集群中,没有“中心主节点”的概念,集群中所有的服务器都是对等的,因此,可以在不做任何配置的更改的情况下实现服务器的的添加与删除,同样的消息的生产者和消费者......
  • C语言 likely和unlikely
    likely和unlikely作用在知道哪个发生概率更高的情况下,有if时使用likely和unlikely让代码运行更快。likely和unlikely是两个宏,当有if-else分支时告诉编译器,哪个条件更加有可能发生。likely代表if分支大概率会发生,unlikely代表if分支大概率不会发生。#definelikely(x)__builtin_......
  • 轻松掌握组件启动之MongoDB:快速入门、Linux安装和Docker配置指南
    引言我们将继续深入研究组件启动专题。在之前的文章中,我们已经详细介绍了Redis的各种配置使用方法,为读者提供了全面的指导。然而,今天我们将转向另一个备受关注的数据库——MongoDB。MongoDB是一种流行的NoSQL数据库,具有强大的灵活性和可扩展性。在这篇文章中,我们将探索MongoDB的......
  • Python入门系列16-os模块
    一、os库介绍os库提供了操作系统功能接口函数,可以操作系统相关变量、文件和目录相关操作、路径相关操作。二、系统变量相关操作1、os.name:返回操作系统类型importosprint(os.name)输出:nt2、os.environ返回系统的环境变量importosprint(os.environ)3、os.sep:返回系统路径......
  • Python入门系列16-os模块
    一、os库介绍os库提供了操作系统功能接口函数,可以操作系统相关变量、文件和目录相关操作、路径相关操作。二、系统变量相关操作1、os.name:返回操作系统类型importosprint(os.name)输出:nt2、os.environ返回系统的环境变量importosprint(os.environ)3、os.sep:返回系统路径......