• leetcode 旋转数组搜索


    lt33 搜索旋转数组

    找到target下标,不在则返回-1

    func search(nums []int, target int) int {
    	//边界判断
    	if len(nums)==0{
    		return -1
    	}
    	l:=0
    	r:=len(nums)-1
    	for l<=r{
    		mid:=l+(r-l)/2
    		if nums[mid]==target{
    			return mid
    		}
    		//分为左边有序和右边有序
    		if nums[l]<=nums[mid]{//左边有序
    			//在左边和不再左边
    			if nums[l]<=target&&target<=nums[mid]{
    				r = mid-1
    			}else{
    				l = mid+1
    			}
    		}else{
    			//在右边和不再右边
    			if nums[mid]<=target&&target<=nums[r]{
    				l = mid+1
    			}else{
    				r = mid-1
    			}
    
    		}
    	}
    	//都不是反-1
    	return -1
    }
    

    lt34 排序数组寻找第一个和最后一个位置

    func searchRange(nums []int, target int) []int {
    	res:=[]int{-1,-1}
    	if len(nums)==0{
    		return res
    	}
    	l:=0
    	r:=len(nums)-1
    	for l<=r{
    		mid:=l+(r-l)/2
    		if nums[mid]>target{
    			r = mid-1
    		}else if nums[mid]<target{
    			l = mid+1
    		}else{
    			start:=mid
    			end:=mid
    			for start>0&&nums[start-1]==target{
    				start--
    			}
    			for end<len(nums)-1&&nums[end+1]==target{
    				end++
    			}
    			res[0] = start
    			res[1] = end
    			return res
    		}
    	}
    	return res
    }
    

    lt 153旋转数组搜索最小值I

    数组元素不重复

    func findMin(nums []int) int {
    	if len(nums)==0{
    		return 0
    	}
    	//判断中间和最右边的关系
    	l:=0
    	r:=len(nums)-1
    	for l<r{
    		mid:=l+(r-l)/2
    		if nums[mid]>nums[r]{
    			l = mid+1
    		}else{
    			r = mid
    		}
    	}
    	return nums[l]
    }
    

    lt 154旋转数组搜索最小值II

    数组包含重复元素
    增加判断重复元素的步骤

    func findMin(nums []int) int {
    	if len(nums)==0{
    		return 0
    	}
    	//判断中间和最右边的关系
    	l:=0
    	r:=len(nums)-1
    	for l<r{
    		//增加判断重复元素
    		for l<r&&nums[l]==nums[l+1]{
    			l++
    		}
    		for l<r&&nums[r]==nums[r-1]{
    			r--
    		}
    		mid:=l+(r-l)/2
    		if nums[mid]>nums[r]{
    			l = mid+1
    		}else{
    			r = mid
    		}
    	}
    	return nums[l]
    }
    
  • 相关阅读:
    《将才》读后感
    存储过程
    frame间传值
    IBM TSM解决方案的技术优势
    通过ISA发布Sharepoint 2007的两种认证方式
    ISA Server 2006新功能(1)
    MetaWeblogAPI C# Code Sample
    客户域环境维护记录
    春运教训
    1明
  • 原文地址:https://www.cnblogs.com/9527s/p/14372449.html
Copyright © 2020-2023  润新知