当前位置: 首页 > Web前端 > HTML

33.搜索旋转排序数组-算法(leetode,附思维导图+全解)300题

时间:2023-03-28 19:58:19 HTML

零题目:算法(leetode,附思维导图+全解)300题(33)搜索旋转排序数组1题目描述二解法概述(思维导图)三AllSolutions1Scheme11)代码://Scheme1"忽略要求,直接调用indexOf等函数"varsearch=function(nums,target){returnnums.indexOf(target);};2Scheme21)代码://方案二《忽略要求,单指针》//技巧://1)nums是有序的,然后与某个下标进行翻转。//2)通过观察我们可以知道,新的nums趋势基本是“升-降-升”。//思路(两种情况为一体)://1)状态初始化//2)两种情况。//2.1)如果nums[left]<=target,则继续判断nums[left]===target。//如果相等,直接返回left,否则left++。//2.2)如果nums[right]>=target,则继续判断nums[right]===target。//如果相等,则直接返回right,否则为right--。varsearch=function(nums,target){//1)状态初始化constl=nums.length;让左=0,右=l-1;//2)有两种情况。//2.1)如果nums[left]<=target,则继续判断nums[left]===target。//如果相等,直接返回left,否则left++。if(nums[left]<=target){while(left=target,则继续判断nums[right]===target。//如果相等,则直接返回right,否则为right--。elseif(nums[right]>=target){while(right>=0){if(nums[right]===target){returnright;}}正确的-;}返回-1;}//boundarycase:[4,5,6,7,0,1,2]3return-1;}3Scheme31)Code://Scheme3"BinarySearch".//提示:O(logn)的时间复杂度-->“二分查找”。//页面://1)https://leetcode-cn.com/problems/search-in-rotated-sorted-array/solution/ji-jian-solution-by-lukelee/varsearch=function(nums,target){constl=nums.长度;让左=0,右=l-1;while(lefttarget)^(nums[0]>nums[mid])^(target>nums[mid])){left=mid+1;}else{右=中间;}}returnleft===right&&nums[left]===target?左:-1;};