一句话思路:反正只是寻找一个最小区间,断开也能二分。根据m第一次的落点,来分情况讨论。

一刷报错:

  1. 结构上有根本性错误:应该是while里面包括if,不然会把代码重复写两遍,不好。
 //situation1
if (nums[mid] > nums[start]) {
while (start + 1 < mid) {
mid = start + (end - start) / 2;
if (nums[mid] == target) {
return mid;
}
else if (nums[start] <= target && target <= nums[mid]) {
end = mid;
}
else start = mid;
}
} //situantion2
else {
while (start + 1 < mid) {
mid = start + (end - start) / 2;
if (nums[mid] == target) {
return mid;
}
if (nums[mid] <= target && target <= nums[end]) {
start = mid;
}
else end = mid;
}
}
  1. int方法的corner case返回值:数组为空,数组长度为0
  2. 居然没有写target== nums[mid]的特殊情况,该死!

一句话总结思路:要把while放在外面,if放在里面。

二刷ac

public class Solution {
/*
* @param nums: an integer rotated sorted array
* @param target: an integer to be searched
* @return: an integer
*/
public int search(int[] nums, int target) {
// write your code here
if (nums.length == 0 || nums == null) {
return -1;
} int start = 0;
int end = nums.length - 1;
int mid; while (start + 1 < end) {
mid = start + (end - start) / 2;
//situation1,red line
if (nums[mid] > nums[start]) {
if (nums[mid] == target) {
end = mid;
}
else if (nums[start] <= target && target <= nums[mid]) {
end = mid;
}
else start = mid;
}
//situation2,green line
else {
if (nums[mid] == target) {
end = mid;
}
if (nums[mid] <= target && target <= nums[end]) {
start = mid;
}
else end = mid;
}
} if (nums[start] == target) {
return start;
}
if (nums[end] == target) {
return end;
} return -1;
}
}

33. Search in Rotated Sorted Array旋转数组二分法查询的更多相关文章

  1. [leetcode]33. Search in Rotated Sorted Array旋转过有序数组里找目标值

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  2. LeetCode题解33.Search in Rotated Sorted Array

    33. Search in Rotated Sorted Array Suppose an array sorted in ascending order is rotated at some piv ...

  3. leetcode 153. Find Minimum in Rotated Sorted Array 、154. Find Minimum in Rotated Sorted Array II 、33. Search in Rotated Sorted Array 、81. Search in Rotated Sorted Array II 、704. Binary Search

    这4个题都是针对旋转的排序数组.其中153.154是在旋转的排序数组中找最小值,33.81是在旋转的排序数组中找一个固定的值.且153和33都是没有重复数值的数组,154.81都是针对各自问题的版本1 ...

  4. [array] leetcode - 33. Search in Rotated Sorted Array - Medium

    leetcode - 33. Search in Rotated Sorted Array - Medium descrition Suppose an array sorted in ascendi ...

  5. LeetCode 33 Search in Rotated Sorted Array [binary search] <c++>

    LeetCode 33 Search in Rotated Sorted Array [binary search] <c++> 给出排序好的一维无重复元素的数组,随机取一个位置断开,把前 ...

  6. [Leetcode][Python]33: Search in Rotated Sorted Array

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 33: Search in Rotated Sorted Arrayhttps ...

  7. 33. Search in Rotated Sorted Array & 81. Search in Rotated Sorted Array II

    33. Search in Rotated Sorted Array Suppose an array sorted in ascending order is rotated at some piv ...

  8. 刷题33. Search in Rotated Sorted Array

    一.题目说明 这个题目是33. Search in Rotated Sorted Array,说的是在一个"扭转"的有序列表中,查找一个元素,时间复杂度O(logn). 二.我的解 ...

  9. [LeetCode] 33. Search in Rotated Sorted Array 在旋转有序数组中搜索

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

随机推荐

  1. CentOS 6.6下安装配置Tomcat环境

    本文转载至:http://www.linuxidc.com/Linux/2015-08/122234.htm 实验系统:CentOS 6.6_x86_64 实验前提:防火墙和selinux都关闭 实验 ...

  2. Linux命令详解-文件系统管理

    1. 外部设备简介 (1.)硬盘的分类: IDE硬盘 ./dev/hda   hdb,hdc…  分区后:/dev/hda1  /dev/hda2 scsi硬盘: /dev/sda   sdb,sdc ...

  3. MySQL 创建数据库的两种方法

    使用 mysqladmin 创建数据库 使用普通用户,你可能需要特定的权限来创建或者删除 MySQL 数据库. 所以我们这边使用root用户登录,root用户拥有最高权限,可以使用 mysql mys ...

  4. php变量详细讲解

    变量是用于存储信息的"容器". 定义一个变量的语法: $变量名 = 值; 使用变量的例子: <?php $x=5; $y=6; $z=$x+$y; echo $z; ?> ...

  5. sqoop导入导出对mysql再带数据库test能跑通用户自己建立的数据库则不行

    sqoop对hdfs导入导出怎么操作这里我就不多说了 现在说下sqoop导入导出时针对mysql后面用户手动创建的数据库导入到处遇到的问题 首先我这里搭建的是3节点集群 master slave1 s ...

  6. List集合的clear方法

    一 . list.clear()底层源码实现 在使用list 结合的时候习惯了 list=null :在创建这样的方式,但是发现使用list的clear 方法很不错,尤其是有大量循环的时候 1.lis ...

  7. OpenACC 简单的原子操作

    ▶ OpenACC 的原子操作,用到了 C++ 的一个高精度计时器 ● 代码,直接的原子操作 #include <iostream> #include <cstdlib> #i ...

  8. 《GPU高性能编程CUDA实战》第九章 原子性

    ▶ 本章介绍了原子操作,给出了基于原子操作的直方图计算的例子. ● 章节代码 #include <stdio.h> #include "cuda_runtime.h" ...

  9. python 网页爬虫,下载网络图片

    # coding=utf-8 import lxml,bs4,re,requests csvContent='' file = open('D:\\tyc_demo.html','rb') soup ...

  10. visual stdio 工程 宏

    $(SolutionDir)  solution目录 $(ProjectDir) Project目录 $(TargetDir) 目标文件夹,如编译出的exe文件所在的目录 $(Configuratio ...