/**
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。
例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。
示例 1:
输入:[3,4,5,1,2]
输出:1
示例 2:
输入:[2,2,2,0,1]
输出:0
*/
var minArray = function(numbers) {
var l = 0;
var r = numbers.length - 1;
while (l < r) {
var mid = Math.floor((l + r) / 2);
if (numbers[mid] < numbers[r]) {
r = mid;
} else if (numbers[mid] > numbers[r]) {
l = mid + 1;
} else {
r--;
}
}
return numbers[l];
};
统计一个数字在排序数组中出现的次数。
/**
示例 1:
输入: nums = [5,7,7,8,8,10], target = 8
输出: 2
示例 2:
输入: nums = [5,7,7,8,8,10], target = 6
输出: 0
*/
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var search = function(nums, target) {
var left = 0;
var right = nums.length - 1;
var count = 0;
var mid = 0;
while (left <= right) {
mid = Math.floor((left + right) / 2);
if (nums[mid] === target) {
break;
} else if (nums[mid] > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
if (nums[mid] === target) {
count = 1;
var l = mid - 1;
var r = mid + 1;
while (l >= 0 && nums[l] === target) {
count++;
l--;
}
while (r < nums.length && nums[r] === target) {
count++;
r++;
}
}
return count;
};
/**
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。
在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。
示例 1:
输入: [0,1,3]
输出: 2
示例 2:
输入: [0,1,2,3,4,5,6,7,9]
输出: 8
*/
/**
* @param {number[]} nums
* @return {number}
*/
var missingNumber = function(nums) {
var left = 0;
var right = nums.length - 1;
while (left <= right) {
var mid = Math.floor((left + right) / 2);
if (nums[mid] === mid) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return left;
};
/**
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。
子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。
例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
示例 1:
输入:nums = [10,9,2,5,3,7,101,18]
输出:4
解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。
示例 2:
输入:nums = [0,1,0,3,2,3]
输出:4
示例 3:
输入:nums = [7,7,7,7,7,7,7]
输出:1
*/
/**
* @param {number[]} nums
* @return {number}
*/
var lengthOfLIS = function(nums) {
};
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。
/**
示例 1:
输入:x = 2.00000, n = 10
输出:1024.00000
示例 2:
输入:x = 2.10000, n = 3
输出:9.26100
示例 3:
输入:x = 2.00000, n = -2
输出:0.25000
解释:2-2 = 1/22 = 1/4 = 0.25
*/
/**
* @param {number} x
* @param {number} n
* @return {number}
*/
var myPow = function(x, n) {
};
/**
给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
*/
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersection = function(nums1, nums2) {
};