美团面试题:寻找数组置尾操作的最小值「建议收藏」

美团面试题:寻找数组置尾操作的最小值

大家好,又见面了,我是全栈君。

题目:

一个递增的整形数组,如今的操作是每次从数组的开头取出一个元素放在数组的末尾。连续n次这种操作后得到一个新的数组,

如今把这个数组给你,请求出最少移动的次数。

解析:

1 最easy想到的方法就是依次遍历这个数组,找到最小值的位置,这种时间复杂度就是O(n)。

2 考虑到事先是排好序的,所以我们能够使用二分查找法来实现这个操作,仅仅只是是这个二分查找法是传统二分查找法的变种。

这里我们仅仅要考虑下面3种情况。
<1>数组先递增再递减,中值大于左值,那么此时的最小值就处于数组的右半部。

<2>数组先递增再递减,中值小于左值,那么此时的最小值就处于数组的左半部。

<3>数组单调递增,此时的最小值就是数组的首元素。

3 程序实现
依据解析中2的思想,採取二分查找法的程序例如以下所看到的:

#include <iostream>
using namespace std;
int getInvertNumber(int arr[],int nLength);


void main()
{
	int arr[] = {1,2,3,4,5,6,7,8,9};
	int brr[] = {1,3,4,6,8,9};
	int sb = getInvertNumber(brr,sizeof(brr)/sizeof(brr[0]));
	cout<<sb<<endl;


}


int getInvertNumber(int arr[],int nLength)
{
	int nLeft = 0;
	int nRight = nLength-1;
	int nMid;
	if(arr[nLeft]<arr[nRight])
		return 0;
	while(nLeft<nRight)
	{
		nMid = ( nLeft + nRight ) / 2;
		if(arr[nMid]>arr[nLeft])
			nLeft = nMid;
		else
			nRight = nMid;
	}


	return nLength -nMid-1;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116511.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ajax的实现_培训的基本内容有哪些?

    ajax的实现_培训的基本内容有哪些? 点击这里下载PDF文件。  点击这里下载示例文件。  点击这里下载视频文件。  相关内容:AJAX培训第二讲:使用AJAX框架(上)  “AJAX培训第二讲:使用AJAX框架”现在拆成了两部分,现在发布是第一部分,探讨了AJAX框架相关内容,并给出了一些最简单的例子。  如果大家对于讲座的内容有任何疑问,请在Q&A专用文章里进行提问,当然如果您有其它任何疑问的话,也能在那里提出,我会尽快为您

    2022年9月12日
    2
  • Win7如何简单的关闭445端口及445端口入侵详解

    Win7如何简单的关闭445端口及445端口入侵详解最近永恒之蓝病毒攻击了很多教育网的同学,下面我们就来看一下如何关闭445端口根据网络安全机构通报,这是不法分子利用NSA黑客武器库泄漏的“永恒之蓝”发起的病毒攻击事件。“永恒之蓝”会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。由于以前国内多次爆发利用445端口传播的蠕虫,运

    2022年6月15日
    127
  • sublime text3激活码【2021免费激活】[通俗易懂]

    (sublime text3激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月22日
    52
  • dataloader 源码_DataLoader

    dataloader 源码_DataLoaderimportpaddle.fluidasfluidimportnumpyasnpBATCH_NUM=10BATCH_SIZE=16EPOCH_NUM=4CLASS_NUM=10ITERABLE=True#whetherthecreatedDataLoaderobjectisiterableUSE_GPU=False#whethertous…

    2022年6月11日
    35
  • idea在mac版怎么配置svn_IntelliJ Idea 集成svn 和使用

    idea在mac版怎么配置svn_IntelliJ Idea 集成svn 和使用最近公司的很多同事开始使用IntelliJIdea,便尝试了一下,虽然快捷键与eclipse有些不同,但是强大的搜索功能与“漂亮的界面”(个人认为没有eclipse好看),还是值得我们去使用的。刚开始使用的idea要去集成svn,下载公司的项目。我是用的是TortoiseSVN(小乌龟),下载后安装,然后记住安装路径,我安装的是64位的。TortoiseSVN的下载地址:htt…

    2022年10月17日
    2
  • 初次尝试多种源码管理软件

    初次尝试多种源码管理软件

    2021年7月21日
    66

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号