跳到主要内容

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

链接:153.寻找旋转排序数组中的最小值
难度:Medium
标签:数组、二分查找
简介:给你一个元素值 互不相同 的数组 nums ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素 。

题解 1 - typescript

  • 编辑时间:2021-04-08
  • 执行用时:96ms
  • 内存消耗:39.4MB
  • 编程语言:typescript
  • 解法介绍:二分查找。
function findMin(nums: number[]): number {
let left = 0;
let right = nums.length - 1;
while (left < right) {
const mid = ~~((left + right) / 2);
if (nums[mid] < nums[right]) right = mid;
else left = mid + 1;
}
return nums[left];
}

题解 2 - typescript

  • 编辑时间:2021-04-08
  • 执行用时:92ms
  • 内存消耗:39.4MB
  • 编程语言:typescript
  • 解法介绍:依次检测存在可能的值。
function findMin(nums: number[]): number {
const len = nums.length;
for (let i = 1; i < len; i++) {
if (nums[i] < nums[i - 1]) return nums[i];
}
return nums[0];
}

题解 3 - typescript

  • 编辑时间:2021-04-08
  • 执行用时:92ms
  • 内存消耗:39.4MB
  • 编程语言:typescript
  • 解法介绍:利用 Math 直接比较。
function findMin(nums: number[]): number {
return Math.min.apply({}, nums);
}