首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

查找二维数组中最大值的最后一个匹配项

可以通过以下步骤实现:

  1. 遍历二维数组,找到最大值及其位置。可以使用两个变量来保存最大值和其对应的行、列索引。初始时,将最大值设为二维数组中的第一个元素,并将行、列索引设为0。
  2. 从第二个元素开始遍历二维数组,如果当前元素大于最大值,则更新最大值及其对应的行、列索引。
  3. 完成遍历后,得到最大值及其位置。
  4. 从最后一行开始,从右向左遍历,找到最后一个匹配最大值的元素。可以使用一个变量来保存最后匹配的元素的位置。初始时,将最后匹配位置设为最后一行的最后一个元素。
  5. 在最后一行的倒序遍历过程中,如果找到与最大值相等的元素,则更新最后匹配位置。
  6. 返回最后匹配位置,即为二维数组中最大值的最后一个匹配项。

这个问题涉及到数组的遍历和比较操作,可以使用任何编程语言实现。

例如,使用JavaScript语言可以实现如下:

代码语言:txt
复制
function findLastMaxMatch(matrix) {
  let maxVal = matrix[0][0]; // 初始最大值设为二维数组的第一个元素
  let maxRow = 0; // 最大值所在行索引
  let maxCol = 0; // 最大值所在列索引

  // 遍历二维数组,找到最大值及其位置
  for (let i = 0; i < matrix.length; i++) {
    for (let j = 0; j < matrix[i].length; j++) {
      if (matrix[i][j] > maxVal) {
        maxVal = matrix[i][j];
        maxRow = i;
        maxCol = j;
      }
    }
  }

  let lastMatch = -1; // 最后一个匹配位置,默认为-1

  // 从最后一行开始,从右向左遍历
  for (let j = matrix[maxRow].length - 1; j >= 0; j--) {
    if (matrix[maxRow][j] === maxVal) {
      lastMatch = j;
      break; // 找到最后一个匹配项后结束遍历
    }
  }

  return lastMatch;
}

// 示例用法
const matrix = [
  [1, 2, 3, 4],
  [5, 6, 7, 8],
  [9, 10, 11, 12],
  [13, 14, 15, 15]
];

const lastMatch = findLastMaxMatch(matrix);
console.log("最大值的最后一个匹配项位置为:" + lastMatch);

以上代码实现了查找二维数组中最大值的最后一个匹配项的功能。对于这个问题,由于不提及具体的云计算品牌商,无法给出与腾讯云相关的产品和产品介绍链接地址。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 算法-二维数组查找

    问题: 在一个二维数组,每一行元素都按照从左到右递增顺序排序,每一列元素都按照从上到下递增顺序排序。实现一个查找功能函数,函数输入为二维数组一个整数,判断数组是否含有该整数。...解题思路: 比如一个二维数组是这样: ?...这个思路关键地方在于右上角点选取,因为这个点值是所在列最小值和所在行最大值,这就意味着: 要查找数值如果比右上角值大,那么它将大于整个行; 要查找数值比如果右上角值小,那么它将小于整个列...如果相等的话,查找就结束了~~~ 所以无论是哪一种情况,都可以让我们删除一个行或一个列,下一次要比较那个值就是删除后二维数组右上角值,总之永远在用右上角值在比较。...,连接成一个一维数组,那么matrix[row * columns + column]不就是对应二维数组第row行,第column列那个数么。

    1.5K100

    剑指offer:二维数组查找

    前言 牛客网剑指offer66道题,刷起来!...每道题会提供简单思路以及测试通过代码 题目描述 在一个二维数组(每个一维数组长度相同),每一行都按照从左到右递增顺序排序,每一列都按照从上到下递增顺序排序。...请完成一个函数,输入这样一个二维数组一个整数,判断数组是否含有该整数。...注:点击左下角阅读原文可以直达原文提交你代码 解答思路 一种简单方法就是整个数组都遍历,当然,数组从左到右,从上到下都是有序,如果你遍历整个数组的话,那就浪费了数组局部有序性了。...实际上我们从数组左下角开始遍历的话,如果 array[row][col] > target,则往上移动,如果array[row][col] < target,则往右移动,否则找到目的数。

    56820

    【剑指offer题解】二维数组查找

    题目介绍 在一个二维数组(每个一维数组长度相同),每一行都按照从左到右递增顺序排序,每一列都按照从上到下递增顺序排序。...请完成一个函数,输入这样一个二维数组一个整数,判断数组是否含有该整数。 解题思路 方法一 首先能够想到肯定是一行一行或者一列一列遍历,判断数组是否含有该整数。...该方法显然是最笨拙二维数组遍历,面试官也不会满意,时间复杂度是O(n^2) 代码 Python class Solution: def Find(self, target, array):...3 8 9 4 9 10 5 10 11 这个区域搜索了两次,我们是从数组一个数[0][0]取,遇到了重复搜索区域问题。...有没有方法去除重复搜索区域呢,我们发现,当从右上角取第一个时候,可以去除重复搜索区域,还是以这个数组为例,取4,搜索8,发现8比4大,那么8不可能出现在4这一行,只需要从下边搜索即可。

    47620

    剑指offer 03:二维数组查找

    ❝永远要这样写代码,好像最终维护你代码的人是个狂暴、知道你住在哪里精神病患者—— 小浩算法 ❞ 二维数组查找 题目描述 在一个二维数组(每个一维数组长度相同),每一行都按照从左到右递增顺序排序...请完成一个函数,输入这样一个二维数组一个整数,判断数组是否含有该整数。...也可以从二维数组左下方开始查找,以下代码使用左下方作为查找起点。 注意,不能选择左上方或者右下方数字,因为这样无法缩小查找范围。...public class Solution { /** * 二维数组查找 * @param target 目标值 * @param array 二维数组...(查找数字是数组最大值和最小值;查找数字介于数组最大值和最小值之间); 二维数组没有查找数字(查找数字大于/小于数组最大值查找数字在数组最大值和最小值之间但数组没有这个数字

    63910

    剑指offer(3)——二维数组查找

    题目: 在一个二维数组,每一行都按照从左到右递增顺序排序,每一列都按照从上到下递增顺序排序。...请完成一个函数,输入这样一个二维数组一个整数,判断数组是否含有该整数 思路: 首先选取数组右上角数,然后让该数(num1)和待查找数(num2)进行比较,如果num1比num2小,那么接下来只能向下继续查找...,行数加1,如果num1比num2大,那么接下来应该将列数减1,继续查找,直到整个数组遍历完成 代码: 1 public boolean findNum(int[][] arr,int num)...6 } 7 } 8 int l=0;//二维数组行数 9 int w=arr[l].length-1;//二维数组列数 10...if(arr[l][w]==num) { 11 //System.out.println("有相同数字"); 12 return true

    37520

    【剑指offer题解】二维数组查找

    ) 题目介绍 在一个二维数组(每个一维数组长度相同),每一行都按照从左到右递增顺序排序,每一列都按照从上到下递增顺序排序。...请完成一个函数,输入这样一个二维数组一个整数,判断数组是否含有该整数。 解题思路 方法一 首先能够想到肯定是一行一行或者一列一列遍历,判断数组是否含有该整数。...该方法显然是最笨拙二维数组遍历,面试官也不会满意,时间复杂度是O(n^2) 代码 Python class Solution: def Find(self, target, array):...3 8 9 4 9 10 5 10 11 这个区域搜索了两次,我们是从数组一个数[0][0]取,遇到了重复搜索区域问题。...有没有方法去除重复搜索区域呢,我们发现,当从右上角取第一个时候,可以去除重复搜索区域,还是以这个数组为例,取4,搜索8,发现8比4大,那么8不可能出现在4这一行,只需要从下边搜索即可。

    35230

    剑指offer - 二维数组查找 - JavaScript

    题目描述:在一个二维数组(每个一维数组长度相同),每一行都按照从左到右递增顺序排序,每一列都按照从上到下递增顺序排序。...请完成一个函数,输入这样一个二维数组一个整数,判断数组是否含有该整数。...题目描述 在一个二维数组(每个一维数组长度相同),每一行都按照从左到右递增顺序排序,每一列都按照从上到下递增顺序排序。...请完成一个函数,输入这样一个二维数组一个整数,判断数组是否含有该整数。 解法 1:暴力法 遍历数组所有元素,找到是否存在。...过程如下: 从右上角开始遍历 当前元素小于目标元素(3 < 5),根据数组特点,当前行中最大元素也小于目标元素,因此进入下一行 当前元素大于目标元素(6 > 5),根据数组特点,行数不变,尝试向前一列查找

    58540
    领券