当前位置: 首页 > 编程笔记 >

在C ++中查找2D数组中的峰元素

党星鹏
2023-03-14
本文向大家介绍在C ++中查找2D数组中的峰元素,包括了在C ++中查找2D数组中的峰元素的使用技巧和注意事项,需要的朋友参考一下

在本教程中,我们将编写一个程序来查找2D数组中的峰值元素。

如果周围所有元素均小于该元素,则该元素称为峰元素。

让我们看看解决问题的步骤。

  • 用伪数据初始化2D数组。

  • 遍历2D数组。

    • list-paddingleft-2" style="list-style-type: square;">
    • 首先,检查2D数组的角元素。

    • 接下来,编写2D数组的第一行和最后一行的条件。

    • 现在,检查2D数组的第一列和最后一列。

    • 最后,检查中间元素

    • 在每种情况下,我们都必须将当前元素与其周围的元素进行比较。它根据上述条件而变化。

    • 在找到结果的任何地方返回值。

示例

让我们看一下代码。

#include <bits/stdc++.h>
using namespace std;
const int MAX = 256;
int findPeakElement(int arr[][MAX], int rows, int columns) {
   for (int i = 0; i < rows; i++) {
      for (int j = 0; j < columns; j++) {
         if (i == 0 && j == 0) {
            if (arr[i][j] > arr[i + 1][j] && arr[i][j] > arr[i][j + 1]) {
               return arr[i][j];
            }
         }
         else if (i == 0 && j == columns - 1) {
            if (arr[i][j] > arr[i + 1][j] && arr[i][j] > arr[i][j - 1]) {
               return arr[i][j];
            }
         }
         else if (i == rows - 1 && j == 0) {
            if (arr[i][j] > arr[i - 1][j] && arr[i][j] > arr[i][j + 1]) {
               return arr[i][j];
            }
         }
         else if (i == rows - 1 && j == columns - 1) {
            if (arr[i][j] > arr[i - 1][j] && arr[i][j] > arr[i][j - 1]) {
               return arr[i][j];
            }
         }
         else if (i == 0) {
            if (arr[i][j] > arr[i][j - 1] && arr[i][j] > arr[i][j + 1] && arr[i][j] > arr[i + 1][j]) {
               return arr[i][j];
            }
         }
         else if (i == rows - 1) {
            if (arr[i][j] > arr[i][j - 1] && arr[i][j] > arr[i][j + 1] && arr[i][j] > arr[i - 1][j]) {
               return arr[i][j];
            }
         }
         else if (j == 0) {
            if (arr[i][j] > arr[i - 1][j] && arr[i][j] > arr[i + 1][j] && arr[i][j] > arr[i][j + 1]) {
               return arr[i][j];
            }
         }
         else if (j == columns - 1) {
            if (arr[i][j] > arr[i - 1][j] && arr[i][j] > arr[i + 1][j] && arr[i][j] > arr[i][j - 1]) {
               return arr[i][j];
            }
         }
         else {
            if (arr[i][j] > arr[i][j - 1] && arr[i][j] > arr[i][j + 1] && arr[i][j] > arr[i - 1][j] && arr[i][j] > arr[i + 1][j]) {
               return arr[i][j];
            }
         }
      }
   }
   return -1;
}
int main() {
   int arr[][MAX] = {
      { 1, 2, 3, 4 },
      { 2, 3, 4, 5 },
      { 1, 3, 7, 5 },
      { 1, 2, 6, 6 } };
   int rows = 4, columns = 4;
   cout << findPeakElement(arr, rows, columns) << endl;
   return 0;
}
输出结果

如果运行上面的代码,则将得到以下结果。

7

结论

 类似资料:
  • 本文向大家介绍在C ++中查找峰值元素,包括了在C ++中查找峰值元素的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将编写一个程序来查找给定数组中的峰元素 峰值元素是大于周围元素的元素。让我们看看解决问题的步骤。 用伪数据初始化数组。 检查第一个元素和最后一个元素的峰值元素状况。 从第二个元素遍历数组。 检查当前元素是否大于上一个元素和下一个元素。 如果上述条件满足,则返回。 打印结果

  • 本文向大家介绍在C ++的链接列表中查找峰值元素,包括了在C ++的链接列表中查找峰值元素的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将编写一个程序,该程序在给定的链表中查找峰值元素。 峰值元素是大于周围元素的元素。让我们看看解决问题的步骤。 为链表创建一个struct节点。 用伪数据创建链接列表。 检查基本情况,例如链表是否为空或长度为1。 将第一个元素存储在一个名为previou

  • 所以我试图解决以下问题: 给定一个整数数组。找到其中的峰值元素。如果数组元素不小于其相邻元素,则该元素为峰值。对于角元素,我们只需要考虑一个邻居。例如,对于输入数组{5,10,20,15},20是唯一的峰值元素。对于输入数组{10、20、15、2、23、90、67},有两个峰值元素:20和90。请注意,我们需要返回任何一个峰值元素。 从以下链接:http://www.geeksforgeeks.o

  • 本文向大家介绍在C ++中查找数组中的分区点,包括了在C ++中查找数组中的分区点的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将在数组中找到分区点,该数组中所有剩余的元素都很小,而所有剩余的元素都很大。 让我们看看解决问题的步骤。 初始化数组。 遍历数组。 从0迭代到I,然后检查每个值是否小于当前值。 从I迭代到n,并检查每个值是否大于当前值。 如果机器人满足条件,则返回该值。 打印

  • 给定二维正整数数组。“路径”是相邻单元格的集合。两个单元格仅从右/左/上/下(无对角线)相邻。 任务是编写一个函数,用于接收2D数组、整数和2D数组路径(与mat大小相同-空数组均为零)。 函数应检查单元格总和等于sum的路径是否存在,如果存在,则应返回true,否则返回false。 数组路径将标记路径(如果存在路径,则标记路径为1)。 例如,如果mat是: 和总和=4 然后,路径可以是以下三种路