二维数组中的查找

Kaggle赛题总结:Enefit - Predict Energy Behavior of Prosumers 竞赛旨在解决能源不平衡的问题,即预计使用的能源与实际使用或产生的能源不符。自发自用者是既消耗又产生能源的个体,他们在造成能源不平衡方面起到了重要作用。尽管他们只占所有能源消费者的一小部分,但他们不可预测的能源使用行为给能源公司带来了物流和财务问题。如果不加以解决,可能会导致运营成本增加、电网不稳定以及能源资源的低效利用。如果这个问题得到有效解决,将显著降低不平衡成本,提高电网的可靠性,并使自发自用者更高效和可持续地融入能源系统中。 阅读详情

题目描述

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

分析:

1289
24912
471013
681115

从二维数组最右上角的数值(9)开始比较,若目标比该数大,则目标肯定在该数的下方,反之,在该数的左方。根据此规则,寻找下一个比较的数值,重复以上规则,直到找到目标数,或者数组越界。

//
//  main.c
//  func
//
//  Created by 52coder on 2017/12/18.
//  Copyright © 2017年 52coder. All rights reserved.
//
#include <stdio.h>

int Find(int matrix[],int rows,int columns,int number)
{
    if((NULL != matrix )&&(rows > 0)&&(columns > 0))
    {
        int row = 0;
        int col = columns - 1;
        while((row < rows)&&(col >= 0))
        {
            if(matrix[row * columns + col] == number)
            {
                return 1;
            }
            else if(matrix[row * columns + col] > number)
            {
                col = col - 1;
            }
            else
            {
                row = row + 1;
            }
        }
    }
    return 0;

}

int search(int (*matrix)[4],int rows,int columns,int number)
{
    if((NULL != matrix )&&(rows > 0)&&(columns > 0))
    {
        int row = 0;
        int col = columns - 1;
        while((row < rows)&&(col >= 0))
        {
            if(matrix[row][col] == number)
            {
                return 1;
            }
            else if(matrix[row][col] > number)
            {
                col = col - 1;
            }
            else
            {
                row = row + 1;
            }
        }
    }
    return 0;

}

int main(int argc, const char * argv[])
{
    int a[16]={1,2,8,9,2,4,9,12,4,7,10,13,6,8,11,15};
    printf("%d\n",Find(a, 4, 4, 7));

    int b[4][4]={1,2,8,9,2,4,9,12,4,7,10,13,6,8,11,15};
    printf("%d\n",search(b, 4, 4, 7));
    return 0;
}

上面的代码中提供了两种解决问题的方法,第一种是按照一维数组的形式所写,书中给出的答案如此,那么如何用二维数组的形式传参呢?
最近刚好在看《C语言程序设计》大名鼎鼎的K&&R,其中有如下介绍,可以参考文章C语言拾遗阅读全部读书笔记。
daytab[2][13]={
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
}
如果将二维数组作为参数传递给函数,那么函数的参数声明中必须指明数组的列数。数组的行数没有太大关系,函数调用时传递的是一个指针,它指向由行向量构成的一维数组,其中每个行向量是具有13个整型元素的一维数组,
在该例子中,传递给函数的是一个指向很多对象的指针,其中每个对象是由13个整型元素构成的一维数组。因此,如果将数组daytab作为参数传递给函数f,那么f的声明应该写成如下形式:
f(int daytab[2][13]){……}
也可以写成
f(int daytab[][13]){……}
由于数组的行数无关紧要,所以该声明还可以写成:

f(int (*daytab)[13]){……}

这种声明形式表明参数是一个指针,它指向具有13个整型元素的一维数组。因为方括号[]的优先级高于*的优先级,所以上述声明中必须使用圆括号,如果去掉圆括号

int *daytab[13]

则变成声明一个数组,该数组有13个元素,其中每个元素都是一个指向整型对象的指针。一般来说,除数组的第一维可以不指定大小外,其余各维必须明确指定大小。

结构化数据特征构建神器openfe的实战代码 最近订阅专栏的几位同学一起参加了AI比赛,该比赛的数据形式是结构化的。随着特征和模型的不断迭代优化,达到了一个难以跨越的瓶颈。希望我能够给出一些有效的方法,帮助他们提高成绩。在个人的调研和体验后,向他们推荐了结构化数据特征构建神器openfe,最终也帮助他们提升了十来名的成绩,个人也感到十分的欣慰。特意写此博客,希望能够帮助更多的同学。 文章目录 1. 安装 2. 实战例子一 3. 实战例子二 阅读详情

相关推荐

企业级智能问数开发的核心痛点与技术聚焦

本文介绍了企业级智能问数系统开发的三大核心问题和解决方案:语义解析不精准、SQL生成不健壮、企业适配难落地。文章从开发者视角出发,详细拆解了NLU语义解析、SQL生成、对话记忆、企业级适配四大核心模块的技术实现。 在技术选型方面,推荐了LangChain+DeepSeek-R1、FAISS/Milvus、SQLAlchemy等工具链组合。针对企业级需求,重点讲解了: 语义解析模块的意图识别优化和要素提取技术 SQL生成模块的语法校验与性能优化方案 对话记忆模块的Redis存储实现 企业级适配的三层防护体系和

lamehsl的专栏 1047

php 二维数组中查找,二维数组中的查找

一、给出的是方阵[[1,6,7,8],[3,7,8,9],[9,10,11,12],[12,13,14,15]]这种情况非常简单,可知对角线元素应为查找元素,如果target大于对角线上某个元素,那么以此对角线为中心,左边、上边的元素应该都小于target此时只需要找到一个对角线上的点,当找个一个刚刚好大于target的元素,那么左边和上边进行二分查找即可,python代码如下: # -*- co...

weixin_42297705的博客 1416

ORB-SLAM3单目+IMU实战:从数据加载到位姿优化的完整流程解析

本文详细解析了ORB-SLAM3单目+IMU模式的完整实战流程。从EuRoC等数据集的数据格式准备、系统启动与数据流入口,到帧构建、IMU预积分、视觉-惯性联合初始化,再到基于运动模型的跟踪、局部地图优化及多线程协同,提供了从环境配置到代码解读的全面指南,并分享了参数调优与性能分析的实用调试经验。

weixin_29085151的博客 296

查找(二维数组中的查找+查找第K大的元素)

二维数组中的查找 题目:牛客网 题目描述: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解题思路: 这个二维数据从左下角往右上看是一个有序的矩阵,每一行的第一个数是本行最小的数,往上的每一行的数都小于本行的数。 从左下角遍历该二维数组,当目标数...

qq_39522046的博客 1928

【Allegro学习笔记】常规标贴封装创建-0402封装创建实例

摘要 本文主要介绍如何使用Allegro制作表面贴装封装。 所使用的软件 使用Allegro制作常规贴片封装主要使用的软件有Pad Designer和Allegro 1 0402类封装制作 1.1 0402类封装焊盘分析 0402封装尺寸图如图1...

Honglong 1万+

从药企研发视角:如何用GNN提升分子水溶性预测准确率?PyTorch+ESOL全案例

本文从药企研发的实际需求出发,详细介绍了如何利用图神经网络(GNN)技术,结合PyTorch框架和ESOL数据集,构建并优化分子水溶性预测模型。通过完整的代码案例,深入探讨了分子图数据处理、GNN架构设计、超参数调优以及模型评估与解释等关键环节,旨在帮助研发团队提升预测准确率,从而更高效地筛选和优化候选药物分子。

weixin_29054399的博客 292

C++ 二维数组中的查找

/** C++中的vector容器 int size() const:返回向量中元素的个数 题目描述 在一个二维数组中(每个一维数组的长度相同), 每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 算法思路: 从二维数组的左下角或者右上角开始进行查找/搜索 以从数组的左下角开始查找的过程为例...

WYXHAHAHA123的博客 1659

kaggle竞赛平台上数据集下载详解

从kaggle 网站上下载数据集既保证了速度又避免了网络的不稳定造成下载失败问题。该平台也可以上传代码作为自己的代码库,不过本人更习惯将代码上传到github上。希望本人整理的kaggle库使用技巧能够帮助到正在阅读本博客的你。此外还有一篇博客针对kaggle数据集下载问题的几个问题的相关文章进行了整理【博客链接】。

li1784506的博客 2万+

BM18 二维数组中的查找

算法-目录 题目来源: BM18 二维数组中的查找 # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param target int整型 # @param array int整型二维数组 # @return bool布尔型 # class Solution: def Find(self , target: int, array: List[List[int]]) -> bool: # write code here

weixin_51246899的博客 218

Simulink中Simscape—Fluids模块(原Simhydraulics)学习记录

学习来源:http://cn.mathworks.com/help/physmod/hydro/getting-started-with-simhydraulics.html 主要学习内容如下图: 详细内容: 1、组件来源 SIMULINK浏览器中的模块:Simscape_Foundation 和 Simscape_Fluids。 2、Simscape下包括多个子

1万+

运行openclaw gateway install时出现Gateway install failed: Error: schtasks create failed的解决方案

本文主要介绍了运行openclaw gateway install时出现Gateway install failed: Error: schtasks create failed的解决方案,希望能对学习和使用openclaw的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 11万+

C/C++ 《剑指offer》——(1)二维数组中的查找整数

问题描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解题思路及知识点 在C/C++中对于查找最常用的方法为顺序查找(即线性查找)和折半查找(即二分法)。 顺序查找的思路是:将待查找的量与数组中的每一个元素进行比较...

yuanzhaoup 646

零差云控 ZeroErr eRob 电机 CAN、CANopen、EtherCAT、ROS2 机器人开发详细教程

TwinCAT 3(Windows 控制与自动化技术)是 Beckhoff 提供的开发平台,可将任何兼容 PC 转变为实时控制系统,用于管理各种类型的工业自动化系统,如 PLC(可编程逻辑控制器)、运动控制、机器人等。

机器人控制与仿真应用 1万+

【剑指offer 04.二维数组中的查找】

剑指offer 04.二维数组中的查找

duanyao0516的博客 515

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 实现who命令
下一篇: 替换空格
52coder
博客等级 码龄17年 87粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值