33. Search in Rotated Sorted Array旋转数组二分法查询
一句话思路:反正只是寻找一个最小区间,断开也能二分。根据m第一次的落点,来分情况讨论。
一刷报错:
- 结构上有根本性错误:应该是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;
}
}
- int方法的corner case返回值:数组为空,数组长度为0
- 居然没有写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旋转数组二分法查询的更多相关文章
- [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. ...
- 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 ...
- 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 ...
- [array] leetcode - 33. Search in Rotated Sorted Array - Medium
leetcode - 33. Search in Rotated Sorted Array - Medium descrition Suppose an array sorted in ascendi ...
- LeetCode 33 Search in Rotated Sorted Array [binary search] <c++>
LeetCode 33 Search in Rotated Sorted Array [binary search] <c++> 给出排序好的一维无重复元素的数组,随机取一个位置断开,把前 ...
- [Leetcode][Python]33: Search in Rotated Sorted Array
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 33: Search in Rotated Sorted Arrayhttps ...
- 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 ...
- 刷题33. Search in Rotated Sorted Array
一.题目说明 这个题目是33. Search in Rotated Sorted Array,说的是在一个"扭转"的有序列表中,查找一个元素,时间复杂度O(logn). 二.我的解 ...
- [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. ...
随机推荐
- InfluxDB 备份和恢复
InfluxDB操作 . 显示数据库 > show databases > create database test > drop database test . 显示说有表 > ...
- AWR实战分析之---- PX Deq Credit: send blkd (转载)
该等待事件我在前面分析过,但是这次和上次产生的原因有些不一样,上次该等待事件的详细分析链接是:http://blog.sina.com.cn/s/blog_61cd89f60102eeen.html ...
- 解决Mac nginx问题 [emerg] 54933#0: bind() to 0.0.0.0:80 failed (13: Permission denied)
brew services restart nginx Stopping nginx... (might take a while) ==> Successfully stopped nginx ...
- django框架ajax
参考 博文https://www.cnblogs.com/yuanchenqi/articles/9070966.html Ajax 简单示例: file_put文件上传页面: <!DOCTYP ...
- 基于Linux的Samba开源共享解决方案测试(五)
对于客户端的网络监控如图: 双NAS网关50Mb码率视音频文件的稳定写测试结果如下: 100Mb/s负载性能记录 NAS网关资源占用 稳定写 稳定写 CPU空闲 内存空闲 网卡占用 NAS1 16个稳 ...
- Ubuntu16安装QQ
安装教程: 一:安装依赖库 在终端输入sudo apt-get install libgtk2.0-0:i386 另外,如果是64位系统还要安装ia32-libs 这里我们选择安装lib32ncurs ...
- node.js入门基础
内容: 1.node.js介绍 2.node.js内置常用模块 3.node.js数据交互 一.node.js介绍 (1)node.js特点 与其他语言相比,有以下优点: 对象.语法和JavaScri ...
- Flutter main future mirotask 的执行顺序
下面这段代码的输出是什么? import 'dart:async'; main() { print('main #1 of 2'); scheduleMicrotask(() => print( ...
- 6. 纯 CSS 绘制一颗闪闪发光的璀璨钻石
原文地址:https://segmentfault.com/a/1190000014652116 HTML代码: <div class="diamond"> <s ...
- 13.从url 输入网址到最终页面渲染完成
从url 输入网址到最终页面渲染完成,发生了什么? 1.DNS解析:将域名地址解析为IP地址 先读取: -浏览器DNS缓存 -系统DNS缓存 -路由器DNS缓存 -网络运营商DNS缓存 -递归搜索:b ...