题解 | #旋转数组的最小数字#

旋转数组的最小数字

https://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba

/* 二分查找,将 nums[m] 和 nums[r] 进行比较,如果前者大于后者,代表 [l, m] 升序,(m, r] 降序,因此在(m, r] 中查找,如果前者小于后者,说明(m, r] 升序,在 [l, m] 中查找,如果前者等于后者,则表示 [m, r] 中存在相等的值,最小值也在该范围 */
int minNumberInRotateArray(vector<int>& nums) {
  int l = 0, r = nums.size() - 1;
  while (l < r) {
	int m = l + (r - l) / 2;
	if (nums[m] > nums[r]) {
	  l = m + 1;
	} else if (nums[m] == nums[r])  {
	  r--;
	} else {
	  r = m;
	}
  } 
  return nums[l];
}

全部评论

相关推荐

2025-12-14 11:43
黑龙江大学 Java
用微笑面对困难:确实比较烂,可以这么修改:加上大学的qs排名,然后大学简介要写一些,然后硕士大学加大加粗,科研经历第一句话都写上在复旦大学时,主要负责xxxx,简历左上角把学校logo写上,建议用复旦大学的简历模板
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务