LeetCode—数组(1)

声明:写这篇博文主要是记录自己刷leetcode oj的情况,也方便自己以后随时查阅复习,在刷题的过程中,有借鉴了别人好的思想,自己绝对没有抄袭的意图。特此声明。

未完,会在以后不断更新

1.Find Minimum in Rotated Sorted Array

 
描述:给一个旋转后的排序数组,找到最小的数,数组中不包含重复数
思路:二分查找
代码:
 public int findMin(int[] nums) {
       int index1=0;
	int index2=nums.length-1;
	int indexMid=index1;
		
	while(nums[index1]>nums[index2]){
		if((index2-index1)==1){//只有两个数
			indexMid=index2;
		break;
	}
			
	indexMid=(index1+index2)/2;
	if(nums[indexMid]>=nums[index1])
		index1=indexMid;
	if(nums[indexMid]<=nums[index2])
		index2=indexMid;
	}
	return nums[indexMid];
 }

2.

Find Minimum in Rotated Sorted Array II

 
描述:给一个旋转后的排序数组,找到最小的数,数组中包含重复数。
代码:
   public int findMin(int[] nums) {
        int start=0;
        int end=nums.length-1;
        int midIndex=start;
        while(nums[end]<=nums[start]){
            if(end-start==1){
                midIndex=end;
                break;
            }
            midIndex=(start+end)/2;
            if(nums[midIndex]==nums[start]&&nums[midIndex]==nums[end]){//当中间数和首尾的数都相等时,这时候二分查找就派不上用场了,只能从头遍历
                return MinInOrder(nums,start,end);
            }
            if(nums[midIndex]>=nums[start]){
                start=midIndex;
            }
            else if(nums[midIndex]<=nums[end]){
                end=midIndex;
            }
        }
        return nums[midIndex];
    }
    public int MinInOrder(int[] nums,int start,int end){
        int result=nums[start];
        for(int i=start+1;i<=end;i++){
            if(result>nums[i]){
                result=nums[i];
            }
        }
        return result;
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值