首页 > 编程知识 正文

牛客网java编程题(编程题怎么给分)

时间:2023-05-03 09:07:09 阅读:96411 作者:1626

主题2:确定数字是否存在的二维有序整数数组。这里的Ordered是指行按从小到大的顺序排列,比如1 2 3 6。

7 8 9 11

当我看到这个问题时,我的第一个想法是确保找到判断的数字所在的行,并确保该行被搜索了一半。所以我设置了两个指针,一个是第0行,另一个是第n-1行,然后我冲进去,如果我做不到,我就找到了,我发现指定的行被分成了两个点。然后可悲的是,我发现是加班,我泪流满面。

说说我看到的效率更高的算法。

从左下角开始,行与行之间、行内都有顺序,因为默认是从左边开始,也就是I=0;通过len - this语句块,可以找到目标元素的值所在的行,但值范围一致,但可能找不到。从某种意义上说,可以说,从下往上,找第一个行号不大于目标。不大于target,因为它在线的左边,而且它在线中从小到大递增,这意味着这条线很可能包含target,因为这条线的下一行甚至最左边的一行都大于target,更不用说这条线的右边了。所有可能包含目标的线都被定位了,我来扮演一个角色,从左到右判断。此时第一个if()语句起什么作用?其实我觉得可以退出市场,但是很明显,这个if()语句发现当前行的元素大于target的时候会多减少一行。其实这个没必要,直接还假就行了。幸运的是,我们将只寻找前一行,并且前一行中的所有元素都小于目标,因此我们将在用完I后结束while循环并返回false。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。