二分查找——Find Peak Element

题目:

给定一个矩阵,找出其中的峰值。矩阵满足num[i]!=num[i+1],矩阵中可能有多个峰值,返回其中之一即可(若要求出所有,则不能使用二分查找法)。另外,you may imagine that num[-1] == num[n] == 负无穷。

例如:矩阵[1,2,3,1],返回3的下标2。

            矩阵[1,2,3,4,5],返回5的下标4。

public int findPeak(int[] data)
	{
		if(data == null||data.length == 0)
			return -1;
		int left=0;
		int right=data.length-1;
		while(left < right-1)
		{
			int mid=left+(right-left)/2;//因为left < right-1所以mid的左右两边一定有数
			if(data[mid] > data[mid-1]&&data[mid] > data[mid+1])
				return mid;
			else if(data[mid] < data[mid+1])
				left=mid;
			else
				right=mid;
		}
		if(data[left] > data[right])
			return left;
		else
			return right;
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值