153.寻找旋转排序数组中的最小值

时游小于 1 分钟LeetCode

153.寻找旋转排序数组中的最小值

/*
 * @lc app=leetcode.cn id=153 lang=typescript
 *
 * [153] 寻找旋转排序数组中的最小值
 * 备注:原数组升序
 */

// @lc code=start
function findMin(nums: number[]): number {
	let l = 0,
		r = nums.length - 1;
	while (l < r) {
		if (r - l == 1) return Math.min(nums[l], nums[r]);
		let mid = Math.floor((l + r) / 2);
		if (nums[l] < nums[mid] && nums[mid] < nums[r]) {
			return nums[l];
		}

		if (nums[l] > nums[mid]) {
			// 右边有序,最小值在左侧
			r = mid;
		} else {
			// 左边有序,最小值在右侧
			l = mid;
		}
	}
	return nums[l];
}

console.log(findMin([3, 1, 2]));

// @lc code=end

上次编辑于:
贡献者: 15327360835
Loading...