力扣题目的参数解释(力扣初用者必看指南)

这篇具有很好参考价值的文章主要介绍了力扣题目的参数解释(力扣初用者必看指南)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

导入:

题目来源:leetcode 867 转置矩阵

参数列表:

int** matrix

int matrixSize

int* matrixColSize

int* returnSize

int** returnColumnSizes

模仿main()函数

完整代码

运行结果

最后本题的AC答案

结语:


导入:

相信初次刷力扣的同学经常会因为题目所给的参数看不懂,导致从入门到入土,例如下面这个题目,相信有一些同学已经汗流浃背了。

力扣题目的参数解释(力扣初用者必看指南),数据结构,leetcode,算法,职场和发展,c++,c语言,数据结构,参数问题


不过没有关系今天写这个文章就是为了解决这个问题,让大家更好的融入力扣大家庭(上头上头✌)。

首先我先给出我的题目来源,这个变量算比较复杂的,所以也比较有代表性。

题目来源:leetcode 867 转置矩阵

那我们开始咯(yeyeye):

参数列表:

int** matrix

int matrixSize

int* matrixColSize

int* returnSize

int** returnColumnSizes

在刷题的时候题目一定要好好看这种信息也不能放过

力扣题目的参数解释(力扣初用者必看指南),数据结构,leetcode,算法,职场和发展,c++,c语言,数据结构,参数问题

翻译如下:

/**

*返回一个大小为*returnSize的数组数组。

*数组的大小以*returnColumnSizes数组的形式返回。

*注意:返回的数组和*columnSizes数组都必须进行mallocated,假设调用者调用free()。

*/


看到这里相信有些朋友就有些想法了吧(没有也没有关系,我会给你将清楚的)

int** matrix

这个就是题目给我们的待转置的数组

int* matrix[2]

int main()
{
	int a[3] = { 1,2,3 };
	int b[3] = { 4,5,6 };
	int* matrix[2] = { a,b };

}

这个比较简单大家也都能理解故我们直接下一个。

int matrixSize

特别注意很多同学(还有我,吐了🤮)可能会因为它的英文而想当然,以为它是整个数组的元素个数,其实它是数组的行数!!!,至于为什么人家就是这么设定的

int* matrixColSize

这个就和它的英文名一样,指的是题目给定数组的列数,不过使用指针来传递的,用的时候记得解引用。

int* returnSize

因为前面有个return所以不难想到,它是要我们返回的(也就是我们求的),后面的Size和前面的matrixSize大同小异,都不是指总元素个数而是行数

int** returnColumnSizes

压轴出场是有道理的,相信许多朋友距离AC都倒在这里了吧(心碎💔),本蒟蒻在这里被恶心了一个晚上,这也就是我为什么要写这篇文章的原因,就是不希望大家在这里浪费时间。

解释如下:我们可以看到它是双重指针,后面有个return和ColumnSizes,不知道大家看到这个会想到什么,我第一时间想到的是,开辟(一定记住返回不论是指针还是双重指针一定要用malloc开创,这也是力扣的一个特点,不用free力扣默认给你free了不用担心)数组图如下

力扣题目的参数解释(力扣初用者必看指南),数据结构,leetcode,算法,职场和发展,c++,c语言,数据结构,参数问题

然后每个数组的首个元素存放行数再返回,但是很可惜,这样是错误的❌的,希望大家不要理解成这样。

正确的思想是:

我先给出正确的代码大家先看看(下面有解释)

力扣题目的参数解释(力扣初用者必看指南),数据结构,leetcode,算法,职场和发展,c++,c语言,数据结构,参数问题

c就是列的意思,r就是行的意思。

我们可以清楚的看到,returnColumnSizes里面只存储了一个指针(可以理解成数组,这里的功能差不多),那个指针里面放了个个行的列数。

下面我给出模仿题目的main()函数,大家看看(非常细节)

模仿main()函数

解释都在代码里面了,故我就不在多说啦。

int main()
{
    int** transpose(int** matrix, int matrixSize, int* matrixColSize, int* returnSize, int** returnColumnSizes);
    int matrix0[3] = { 1, 2, 3 };           // 矩阵第1行元素 
    int matrix1[3] = { 4, 5, 6 };          //矩阵第2行元素   
    int* matrix[2] = { matrix0, matrix1 };  // 指针数组, 此处不能直接定义matrix[2][3]作为入参
    int matrixSize = 2;                   //对应行数m      
    int matrixColSize[2] = { 3, 3 };        // 每一行元素个数n 
    int returnSize = 0;                   // 返回矩阵的行数                        
    int* returnColumnSizes = NULL;        // 返回矩阵每一行的列数, 是个数组(指针表示) 
    int** ans = transpose(matrix, matrixSize, matrixColSize, &returnSize, &returnColumnSizes);    // 注意这里要用取地址                            
    // 如果要改变一个变量的值, 就需要传入该变量的指针 
    // ans最终返回为n * m的矩阵 
    for (int i = 0; i < returnSize; i++)
    {
        for (int j = 0; j < matrixSize; j++)
        {
            printf("%d ", ans[i][j]);
        }
        printf("\n");

    }
    return 0;
}

接下来是总代码目标数组我就设为两行三列的数组。

力扣题目的参数解释(力扣初用者必看指南),数据结构,leetcode,算法,职场和发展,c++,c语言,数据结构,参数问题

完整代码

数组大家可以自己调整

#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdbool.h>
#include <stdio.h>
#include <string.h> 
#include <stdlib.h>
int main()
{
    int** transpose(int** matrix, int matrixSize, int* matrixColSize, int* returnSize, int** returnColumnSizes);
    int matrix0[3] = { 1, 2, 3 };           // 矩阵第1行元素 
    int matrix1[3] = { 4, 5, 6 };          //矩阵第2行元素   
    int* matrix[2] = { matrix0, matrix1 };  // 指针数组, 此处不能直接定义matrix[2][3]作为入参
    int matrixSize = 2;                   //对应行数m      
    int matrixColSize[2] = { 3, 3 };        // 每一行元素个数n 
    int returnSize = 0;                   // 返回矩阵的行数                        
    int* returnColumnSizes = NULL;        // 返回矩阵每一行的列数, 是个数组(指针表示) 
    int** ans = transpose(matrix, matrixSize, matrixColSize, &returnSize, &returnColumnSizes);    // 注意这里要用取地址                            
    // 如果要改变一个变量的值, 就需要传入该变量的指针 
    // ans最终返回为n * m的矩阵 
    for (int i = 0; i < returnSize; i++)
    {
        for (int j = 0; j < matrixSize; j++)
        {
            printf("%d ", ans[i][j]);
        }
        printf("\n");

    }
    return 0;
}
int** transpose(int** matrix, int matrixSize, int* matrixColSize, int* returnSize, int** returnColumnSizes) 
{
    int r = matrixSize;//行m
    int c = *matrixColSize;//列n
    int** transmatrix = (int**)malloc(sizeof(int*) * c);
    *returnColumnSizes = (int*)malloc(sizeof(int) * c);
    for (int i = 0; i < c; i++)
    {
        transmatrix[i] = (int*)malloc(sizeof(int) * r);
        (*returnColumnSizes)[i] = r;
    }
    for (int i = 0; i < r; i++)
    {
        for (int j = 0; j < c; j++)
        {
            transmatrix[j][i] = matrix[i][j];
        }
    }
    *returnSize = c;
    return transmatrix;
}

运行结果

力扣题目的参数解释(力扣初用者必看指南),数据结构,leetcode,算法,职场和发展,c++,c语言,数据结构,参数问题

最后本题的AC答案

/**
 * 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** transpose(int** matrix, int matrixSize, int* matrixColSize, int* returnSize, int** returnColumnSizes) {
    int r = matrixSize;//行m
    int c = *matrixColSize;//列n
    int**transmatrix = (int**)malloc(sizeof(int*)*c);
    *returnColumnSizes = (int*)malloc(sizeof(int)*c);
    for(int i =0;i<c;i++)
    {
        transmatrix[i] = (int*)malloc(sizeof(int)*r);
        (*returnColumnSizes)[i] = r; 
    } 
    for(int i =0;i<r;i++)
    {
        for(int j =0;j<c;j++)
        {
            transmatrix[j][i] = matrix[i][j];
        }
    }
    *returnSize = c;
    return transmatrix;
}

由于本题简单,加上本文重点并不在将解决本题,如果有朋友对本题还有疑惑的话可以去看看官方题解(非常抱歉)

结语:

其实写博客不仅仅是为了教大家,同时这也有利于我巩固自己的知识点,和一个学习的总结,由于作者水平有限,对文章有任何问题的还请指出,接受大家的批评,让我改进,如果大家有所收获的话还请不要吝啬你们的点赞和收藏,这可以激励我写出更加优秀的文章。

力扣题目的参数解释(力扣初用者必看指南),数据结构,leetcode,算法,职场和发展,c++,c语言,数据结构,参数问题文章来源地址https://www.toymoban.com/news/detail-824004.html

到了这里,关于力扣题目的参数解释(力扣初用者必看指南)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【必看】最全开窗函数讲解和实战指南

    窗口函数(Window Function)是 SQL2003 标准中定义的一项新特性,并在 SQL2011、SQL2016 中又加以完善,添加了若干拓展。 一.窗口函数有什么用? 在日常工作中,经常会遇到需要 在每组内排名 ,比如下面的业务需求: 排名问题:每个部门按业绩来排名 topN问题:找出每个部门排名

    2024年01月22日
    浏览(28)
  • Mac 用户必看:Postman 下载与安装指南

    Postman  是一个非常强大的 API 测试工具,它可以让你轻松地发送各种 HTTP 请求,查看响应结果,管理测试用例和环境变量等等。如果你想成为一个优秀的 API 开发者或者测试者,那么 Postman 是你必不可少的利器。 那么,如何在 Mac 电脑上下载和安装 Postman 呢?其实很简单,只

    2024年02月12日
    浏览(39)
  • 【网安】工具篇:CE修改器详细使用指南(必看)

    Cheat Engine 简称 CE ,这是一款内存修改编辑工具,可以修改运行在windows/Mac系统上的游戏或者软件的内存数据,所以你将总是赢。它包括16进制编辑,反汇编程序,内存查找工具。CE修改器与同类修改工具相比,它具有强大的反汇编功能,且自身附带了修改器制作工具,可以用

    2024年01月20日
    浏览(33)
  • 【胡学长 带你学 Global Mapper 】新手必看 入门指南

    Hi,我是胡学长!感谢您下载Global Mapper______一款经济实惠且易于使用的GIS应用程序。易于使用 直观的界面,高性价比且功能完善的GIS,可提供多源空间数据格式支持,以满足有经验的GIS专业工作者和初级用户的需求。当您开始探索Global Mapper 的丰富特性和功能时,您将很快了

    2024年01月16日
    浏览(41)
  • GitHub新手必看:SSH密钥设置和‘Permission Denied‘错误解决指南

    问题描述 : 当您尝试从GitHub仓库拉取或推送代码时,可能会遇到这样的错误信息:“git@github.com: Permission denied (publickey). fatal: Could not read from remote repository.” 这类似于您试图进入一间锁着的房间,但您没有正确的钥匙。 解决步骤 : 检查您的钥匙串 : 在终端运行 ssh-add -l

    2024年02月04日
    浏览(39)
  • nginx配置参数解释

    Nginx是一款轻量级的HTTP服务器,采用事件驱动的异步非阻塞处理方式框架,这让其具有极好的IO性能,时常用于服务端的反向代理和负载均衡。 Nginx的优点 支持海量高并发:采用IO多路复用epoll。官方测试Nginx能够支持5万并发链接,实际生产环境中可以支撑2-4万并发连接数。

    2024年02月05日
    浏览(37)
  • 测试员进阶必看系列 “ python自动化测试工具selenium使用指南 ”

    概述 python+selenium环境安装 使用selenium启动浏览器 selenium页面加载等待和检测 使用time.sleep()等待 使用implicitly_wait设置最长等待时间 使用WebDriverWait设置等待条件 检测document是否加载完成 selenium元素定位和读取 查找元素 dom元素交互 查找元素失败处理 selenium交互控制 ActionChains动

    2024年02月05日
    浏览(86)
  • Spring Boot + RabbitMQ 配置参数解释

    spring.rabbitmq.host: 服务Host spring.rabbitmq.port: 服务端口 spring.rabbitmq.username: 登陆用户名 spring.rabbitmq.password: 登陆密码 spring.rabbitmq.virtual-host: 连接到rabbitMQ的vhost spring.rabbitmq.addresses: 指定client连接到的server的地址,多个以逗号分隔(优先取addresses,然后再取host) spring.rabbitmq.requested

    2024年01月24日
    浏览(37)
  • sklearn中主成分分析PCA参数解释

    主成分分析一般用于数据降维,在应用主成分分析包scikit-learn时注意以下四点: 1、用pca.components_可以获取特征向量,且特征向量为 行向量 ,例如W = pca.components_[0, :] (或W = pca.components_[0])为第一特征向量,而W = pca.components_[1, :]表示第二特征向量。 2、采用特征向量对点云进

    2024年02月12日
    浏览(31)
  • Xgboost.plot_importance 参数解释

    2023年04月08日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包