左移递减数列查找某一个数

原创 2012年03月29日 17:00:06
48.微软(运算):
一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}
是由{6,5,4,3,2,1}左移两位形成的,在这种数组中
#include<iostream>
#include<cassert>
#include<stack>
using namespace std ;
int FindNumberInLeftShiftSequence(int *A,int nLen,int expectedNum)
{
	assert(A!=NULL&&nLen>0);
	int start=0;
	int end=nLen-1;
	while(start<=end)
	{
		int mid=start+((end-start)>>2);
		if(expectedNum==A[mid])
			return mid;
		if (A[mid]<A[start])
		{
			if(expectedNum>A[mid])
				end=mid-1;
			else 
				start=mid+1;
		}
		else if(A[mid]>A[start])
		{
			if(expectedNum<A[mid])
				start=mid+1;
			else
				end=mid-1;
		}
		else
		{
			for (int i=start;i<mid;i++)
			{
				if(A[i]==expectedNum)
					return i;
			}
			start=mid+1;
		}
	}
	return -1;
}
int main()
{
	int A[]={6,5,4,3,2,1};
	int nLen=sizeof(A)/sizeof(int);
	cout<<FindNumberInLeftShiftSequence(A,nLen,0)<<endl;
	int B[]={1,1,1,1,0,1};
	int nLen2=sizeof(B)/sizeof(int);
	cout<<FindNumberInLeftShiftSequence(B,nLen2,0);
	return 1;
}

[面试题]在一个先增长后减小的数组中找到最大值

题目如下: Given an array of integers. Find a peak element in it. An array element is peak if it is large...
  • feliciafay
  • feliciafay
  • 2014年03月06日 02:04
  • 4632

java 基础数据遍历(2)----二维数组查找

题目要求: 一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 输入描述:arr...
  • wjw19969527
  • wjw19969527
  • 2016年04月12日 16:13
  • 1137

算法导论 习题15.4-5 15.4-6 找出一个n个数的序列中最长的单调递增子序列

算法导论15.4-5 请给出一个O(n^2)时间的算法,使之能找出一个n个数的序列中最长的单调递增子序列。 这个题目是在动态规划部分,此处显然是要用到动态规划。 我们知道可以使用动态规划思想的问题的...
  • LucienDuan
  • LucienDuan
  • 2014年04月24日 12:48
  • 5856

算法习题48:一个数组是由一个递减数列左移若干位形成的,在这种数组中查找某一个数。

微软: 一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5} 是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数。  ------------------...
  • ylf13
  • ylf13
  • 2013年11月07日 09:49
  • 825

48 一个数组是由一个递减数列左移若干位形成的,然后查找某一个数

/* 48.微软: 一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5} 是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数。 方法1: 就是找到移位的点,...
  • u012605629
  • u012605629
  • 2014年10月02日 23:06
  • 652

一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数

/* copyright@nciaebupt 转载请注明出处 题目:一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查...
  • wuwuwuwuwuwuwuwu
  • wuwuwuwuwuwuwuwu
  • 2013年01月17日 15:47
  • 1216

coding - 递减数组左移后寻找某一个数

题目描述: 一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数。  分析: 查找数第一反应...
  • allen_fan_11
  • allen_fan_11
  • 2013年07月15日 16:16
  • 661

45.递减左旋数列中查找一个数

题目:一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}克移两位形成的,在这种数组中查找某一个数。   思路:在此序列不断二分的过程中,由于原序...
  • cxh342968816
  • cxh342968816
  • 2011年08月09日 14:55
  • 1685

递减左旋数列中查找一个数

题目:一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}克移两位形成的,在这种数组中查找某一个数。 分析:将这个数组{4,3,2,1,6,...
  • diudiuyoung
  • diudiuyoung
  • 2015年05月20日 22:03
  • 235

在左移的递减数组中查找某数 【微软面试100题 第四十八题】

题目要求:   一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1,}左移两位形成的,在这种数组中查找某个数。 题目分析:   方法...
  • tractor_man
  • tractor_man
  • 2014年11月08日 21:45
  • 333
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:左移递减数列查找某一个数
举报原因:
原因补充:

(最多只允许输入30个字)