长沙免费网站排名,上海做网站优化价格,网站会员推广功能,wordpress goto主题1 .山脉数组的巅峰索引
信息
我们把符合下列属性的数组 A 称作山脉#xff1a;
A.length 3 存在 0 i A.length - 1 使得A[0] A[1] … A[i-1] A[i] A[i1] … A[A.length - 1] 给定一个确定为山脉的数组#xff0c;返回任何满…1 .山脉数组的巅峰索引
信息
我们把符合下列属性的数组 A 称作山脉
A.length 3 存在 0 i A.length - 1 使得A[0] A[1] … A[i-1] A[i] A[i1] … A[A.length - 1] 给定一个确定为山脉的数组返回任何满足 A[0] A[1] … A[i-1] A[i] A[i1] … A[A.length - 1] 的 i 的值。
示例 1
输入[0,1,0] 输出1 示例 2
输入[0,2,1,0] 输出1
提示
3 A.length 10000 0 A[i] 10^6 A 是如上定义的山脉
答案
class Solution(object):def peakIndexInMountainArray(self, A)::type A: List[int]:rtype: intreturn A.index(max(A))2.两个数组的交集
信息
给定两个数组编写一个函数来计算它们的交集。
示例 1:
输入: nums1 [1,2,2,1], nums2 [2,2] 输出: [2] 示例 2:
输入: nums1 [4,9,5], nums2 [9,4,9,8,4] 输出: [9,4] 说明:
输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。
答案
class Solution(object):def intersection(self, nums1, nums2)::type nums1: List[int]:type nums2: List[int]:rtype: List[int]dic {}p[]for num in nums1:if num not in dic:dic[num] 0for num in nums2:if num in dic:p.append(num)del dic[num]return p3. 二分查找
信息
有序的数组nums:
答案
class Solution(object):def search(self, nums, target)::type nums: List[int]:type target: int:rtype: intleft ,right 0, len(nums)-1while left right:mid(left right)/2if nums[mid] target:return midelif nums[mid] target:left mid 1else:right mid - 1 return -14 .在数组中是否存在两个数使其和等于target
信息
给定一个已按照升序排列 的有序数组找到两个数使得它们相加之和等于目标数。
函数应该返回这两个下标值 index1 和 index2其中 index1 必须小于 index2。
说明:
返回的下标值index1 和 index2不是从零开始的。 你可以假设每个输入只对应唯一的答案而且你不可以重复使用相同的元素。 示例:
输入: numbers [2, 7, 11, 15], target 9 输出: [1,2] 解释: 2 与 7 之和等于目标数 9 。因此 index1 1, index2 2 。
答案
class Solution(object):def twoSum(self, numbers, target)::type numbers: List[int]:type target: int:rtype: List[int]low,high 0,len(numbers)-1while(low high):if (numbers[low] numbers[high] target):return [low1, high1]elif numbers[low] numbers[high] target:low low 1else:high high - 15.搜索插入位置
信息
给定一个排序数组和一个目标值在数组中找到目标值并返回其索引。如果目标值不存在于数组中返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
输入: [1,3,5,6], 5 输出: 2 示例 2:
输入: [1,3,5,6], 2 输出: 1 示例 3:
输入: [1,3,5,6], 7 输出: 4 示例 4:
输入: [1,3,5,6], 0 输出: 0
答案
class Solution(object):def searchInsert(self, nums, target)::type nums: List[int]:type target: int:rtype: intlow,high 0,len(nums)while low high:mid low (lowhigh)//2if nums[mid] target:highmidelif nums[mid] target:lowmid1else:return midreturn low6. 找到两个数组的交集
信息
给定两个数组编写一个函数来计算它们的交集。
示例 1:
输入: nums1 [1,2,2,1], nums2 [2,2] 输出: [2,2] 示例 2:
输入: nums1 [4,9,5], nums2 [9,4,9,8,4] 输出: [4,9] 说明
输出结果中每个元素出现的次数应与元素在两个数组中出现的次数一致。 我们可以不考虑输出结果的顺序。 进阶:
如果给定的数组已经排好序呢你将如何优化你的算法 如果 nums1 的大小比 nums2 小很多哪种方法更优 如果 nums2 的元素存储在磁盘上磁盘内存是有限的并且你不能一次加载所有的元素到内存中你该怎么办