牛客NC86 矩阵元素查找【中等 分治,减治 C++/Java/Go/PHP】

2024-04-29 06:20

本文主要是介绍牛客NC86 矩阵元素查找【中等 分治,减治 C++/Java/Go/PHP】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目

在这里插入图片描述
题目链接:
https://www.nowcoder.com/practice/3afe6fabdb2c46ed98f06cfd9a20f2ce

思路

选择左下角为起点,以下展示了「减治」的过程。
搜索的规律是:如果当前数比目标元素小,当前列就不可能存在目标值,「指针」就向右移一格(纵坐标加 1);
如果当前数比目标元素大,当前行就不可能存在目标值,「指针」就向上移一格(横坐标减 1)。
在编码的过程中要注意数组下标越界的问题。

参考答案C++

class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param mat int整型vector<vector<>> * @param n int整型 * @param m int整型 * @param x int整型 * @return int整型vector*/vector<int> findElement(vector<vector<int> >& mat, int n, int m, int x) {/*选择左下角为起点,以下展示了「减治」的过程。搜索的规律是:如果当前数比目标元素小,当前列就不可能存在目标值,「指针」就向右移一格(纵坐标加 1);如果当前数比目标元素大,当前行就不可能存在目标值,「指针」就向上移一格(横坐标减 1)。在编码的过程中要注意数组下标越界的问题。*/// 起点:左下角int currow = n-1;int curcol = 0;// 不越界的条件是:行大于等于 0,列小于等于 cols - 1vector<int> ans = {-1,-1};while (currow >=0 && curcol<m){if(mat[currow][curcol] >x ){currow-=1;}else if(mat[currow][curcol] <x){curcol+=1;}else{ans[0] =currow;ans[1] =curcol;break;}}return ans;}
};

参考答案Java

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param mat int整型二维数组* @param n int整型* @param m int整型* @param x int整型* @return int整型一维数组*/public int[] findElement (int[][] mat, int n, int m, int x) {/*选择左下角为起点,以下展示了「减治」的过程。搜索的规律是:如果当前数比目标元素小,当前列就不可能存在目标值,「指针」就向右移一格(纵坐标加 1);如果当前数比目标元素大,当前行就不可能存在目标值,「指针」就向上移一格(横坐标减 1)。在编码的过程中要注意数组下标越界的问题。*/// 起点:左下角int currow = n - 1;int curcol = 0;// 不越界的条件是:行大于等于 0,列小于等于 cols - 1while (currow >= 0 && curcol < m) {if (mat[currow][curcol] > x) {currow -= 1;} else if (mat[currow][curcol] < x) {curcol += 1;} else {return new int[] {currow, curcol};}}return new int[] {-1, -1};}
}

参考答案Go

package main/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param mat int整型二维数组* @param n int整型* @param m int整型* @param x int整型* @return int整型一维数组*/
func findElement(mat [][]int, n int, m int, x int) []int {/*选择左下角为起点,以下展示了「减治」的过程。搜索的规律是:如果当前数比目标元素小,当前列就不可能存在目标值,「指针」就向右移一格(纵坐标加 1);如果当前数比目标元素大,当前行就不可能存在目标值,「指针」就向上移一格(横坐标减 1)。在编码的过程中要注意数组下标越界的问题。*/// 起点:左下角currow := n - 1curcol := 0ans := []int{-1, -1}// 不越界的条件是:行大于等于 0,列小于等于 cols - 1for currow >= 0 && curcol < m {if mat[currow][curcol] > x {currow -= 1} else if mat[currow][curcol] < x {curcol += 1} else {ans[0] = currowans[1] = curcolbreak}}return ans
}

参考答案PHP

<?php/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param mat int整型二维数组 * @param n int整型 * @param m int整型 * @param x int整型 * @return int整型一维数组*/
function findElement( $mat ,  $n ,  $m ,  $x )
{/*选择左下角为起点,以下展示了「减治」的过程。搜索的规律是:如果当前数比目标元素小,当前列就不可能存在目标值,「指针」就向右移一格(纵坐标加 1);如果当前数比目标元素大,当前行就不可能存在目标值,「指针」就向上移一格(横坐标减 1)。在编码的过程中要注意数组下标越界的问题。*/// 起点:左下角$currow = $n-1;$curcol = 0;$ans = [-1,-1];while ($currow >=0 && $curcol < $m){if($mat[$currow][$curcol] > $x) {$currow-=1;}else if($mat[$currow][$curcol] < $x){$curcol+=1;}else{$ans[0] =$currow;$ans[1] =$curcol;break;}}return $ans;
}

这篇关于牛客NC86 矩阵元素查找【中等 分治,减治 C++/Java/Go/PHP】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/945320

相关文章

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

Java空指针异常NullPointerException的原因与解决方案

《Java空指针异常NullPointerException的原因与解决方案》在Java开发中,NullPointerException(空指针异常)是最常见的运行时异常之一,通常发生在程序尝试访问或... 目录一、空指针异常产生的原因1. 变量未初始化2. 对象引用被显式置为null3. 方法返回null

一文彻底搞懂Java 中的 SPI 是什么

《一文彻底搞懂Java中的SPI是什么》:本文主要介绍Java中的SPI是什么,本篇文章将通过经典题目、实战解析和面试官视角,帮助你从容应对“SPI”相关问题,赢得技术面试的加分项,需要的朋... 目录一、面试主题概述二、高频面试题汇总三、重点题目详解✅ 面试题1:Java 的 SPI 是什么?如何实现一个

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

SpringCloud中的@FeignClient注解使用详解

《SpringCloud中的@FeignClient注解使用详解》在SpringCloud中使用Feign进行服务间的调用时,通常会使用@FeignClient注解来标记Feign客户端接口,这篇文章... 在Spring Cloud中使用Feign进行服务间的调用时,通常会使用@FeignClient注解

Java Spring 中的监听器Listener详解与实战教程

《JavaSpring中的监听器Listener详解与实战教程》Spring提供了多种监听器机制,可以用于监听应用生命周期、会话生命周期和请求处理过程中的事件,:本文主要介绍JavaSprin... 目录一、监听器的作用1.1 应用生命周期管理1.2 会话管理1.3 请求处理监控二、创建监听器2.1 Ser

C/C++中OpenCV 矩阵运算的实现

《C/C++中OpenCV矩阵运算的实现》本文主要介绍了C/C++中OpenCV矩阵运算的实现,包括基本算术运算(标量与矩阵)、矩阵乘法、转置、逆矩阵、行列式、迹、范数等操作,感兴趣的可以了解一下... 目录矩阵的创建与初始化创建矩阵访问矩阵元素基本的算术运算 ➕➖✖️➗矩阵与标量运算矩阵与矩阵运算 (逐元

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y