当前位置: 首页 > 知识库问答 >
问题:

在循环排序数组中搜索Java

公瑞
2023-03-14

我真的被困在这件事上了,我很想得到你的帮助
我正在尝试编写一个带有签名的方法:

public static boolean search (int [][] mat, int num)

该方法以循环排序的二维数组和搜索num的值作为参数获取。如果值num在mat数组中,则该方法返回true。如果num值不在mat数组中,则该方法返回false。

如果第1季度的所有值都比第2季度的值小,第2季度的值比第3季度的值小,第3季度的值比第4季度的值小,那么该数组就是圆形的。

例如,以下数组是循环排序的:

如果数组mat是上面画的数组,数字num是22,该方法返回值true。
如果数组mat是上面画的数组,数字num是23,该方法将返回值false

  • 数组是二次二维的,意思是行数和列数相等
  • 垫数组不是空的,是循环排序的。你不需要检查这个。
  • 该方法应该尽可能有效,无论是在时间复杂度方面还是在内存复杂度方面。

共有1个答案

沈淇
2023-03-14

这种结构是这样的,每个季度的最小元素在左上方,最大的元素在左下方。您可以检查搜索的元素应该位于哪个季度,并在该季度的子季度中重复搜索。

 类似资料:
  • 问题内容: 您将获得一个排序和旋转的数组,如下所示: 如果您注意到数组已排序和旋转。您需要以 o(log n) 时间复杂度搜索上述数组中的元素。 问题答案: 您可以使用线性搜索在上述数组中搜索元素,但这需要 o(n)。 您可以使用二进制搜索算法的变体来解决上述问题。您可以使用可以将数组划分为两个排序的子数组({16,19,21,25},{3,5,8,10} )的属性,尽管您不需要找到枢轴点(元素开

  • 问题内容: 假设我有以下数组: 我怎么在那里我有值序列发生指数:?因此,在这种情况下的预期输出为:。 编辑: 1)请注意,这只是一个序列。可能是或或,仅此而已。 2)如果将我的数组修改为:,则具有相同序列的预期结果将是。 我正在寻找一些NumPy快捷方式。 问题答案: 嗯,这基本上是图像处理中经常出现的问题。这篇文章中列出了两种方法:基于纯NumPy和基于OpenCV(cv2)。 方法1: 使用N

  • 假设您有一个数组,其中包含一周中的几天: 现在假设你有一个数组,它记录一年中的每一个数字日,这个数组由366个元素组成。 有没有可能写一个循环或一些东西,当在天数组中循环时,它重置回星期一以保持输出看起来像: 周一:1周二:2周三:3周四:4周五:5周六:6周日:7周一:8周二:9 ect一直到366

  • sort()函数返回输入数组的排序副本。 它有以下参数: 其中: 序号 参数及描述 1. a 要排序的数组 2. axis 沿着它排序数组的轴,如果没有数组会被展开,沿着最后的轴排序 3. kind 默认为'quicksort'(快速排序) 4. order 如果数组包含字段,则是要排序的字段 import numpy as np a = np.array([[3,7],[9,1]]) pri

  • rank ▲ ✰ vote url 21 688 153 1320 url 在循环中获取索引(数组下标) 有人知道如何获取列表的索引值吗: ints = [8, 23, 45, 12, 78] 当我循环这个列表时如何获得它的索引下标? 如果像C或者PHP那样加入一个状态变量那就太不pythonic了. 最好的选择就是用内建函数enumerate for idx, val in enumerate

  • 本文向大家介绍编写Golang程序以搜索排序数组中的元素,包括了编写Golang程序以搜索排序数组中的元素的使用技巧和注意事项,需要的朋友参考一下 解决这个问题的方法 步骤1:将数组从第0个索引迭代到n-1,其中n是给定数组的大小。 步骤2:声明low = 0th索引和high = n-1。启动一个for循环,直到低电平小于高电平为止。 步骤3:找到mid =(low + high)/ 2,如果中