Search Rotate Position in Sorted Array
来源:互联网 发布:网络渗透软件 编辑:程序博客网 时间:2024/05/01 08:38
public static int searchHelper(int[] arr, int left, int right) {if (left > right) {return -1;}int mid = left + (right - left) / 2;// 正常顺序, 一直找到左端if (mid == 0) {// 特殊情况, 只rotate一次,例如 5,1,2,3,4if (arr.length > 1 && arr[mid] > arr[mid + 1]) return 1;return 0;}// 逆序, 一直找到右端if (mid == arr.length - 1) {return arr.length;}// 找到 rotate 点的条件if (arr[mid] > arr[mid + 1] && arr[mid] >= arr[mid - 1]) {return mid + 1;}// 右边顺序正常,到左边找if (arr[mid] < arr[right]) {return searchHelper(arr, left, mid - 1);// 右边顺序不正常,到右边找} else if (arr[mid] > arr[right]) {return searchHelper(arr, mid + 1, right);// 特殊情况, 有 duplicate, 左右判断不出来,例如 {2,2,2,2,1,2,2}, 左右都找} else {int searchLeftResult = searchHelper(arr, left, mid - 1);int searchRightResult = searchHelper(arr, mid + 1, right);if (searchLeftResult == -1 && searchRightResult == -1) return -1;if (searchLeftResult != -1) return searchLeftResult;if (searchRightResult != -1) return searchRightResult;return -1;}}public static int searchRotatePosition(int[] arr) {return searchHelper(arr, 0, arr.length - 1);}
几个 test case:
A0 = {3,4,5,6,7,8,1,2}
A1 = {1,2,3,4,5,6,7}
A2 = {7,6,5,4,3,2,1}
A3 = {5,1,1,1,2,3,4}
A4 = {2,2,3,4,1,2,2}
A5 = {2,2,2,2,1,2,2}
0 0
- Search Rotate Position in Sorted Array
- [LeetCode] Search in Rotated Sorted Array、Search for a Range、Search Insert Position、Search in Rotate
- Search Insert Position &&Search in Rotated Sorted Array &&Search in Rotated Sorted Array II
- search-insert-position/search-in-rotated-sorted-array/search-in-rotated-sorted-array ii
- Search Insert Position &Search in Rotated Sorted Array
- Leetcode: Search in Rotate Sorted Array II 理解分析
- Search In Sorted Array
- leetcode Search in Rotated Sorted Array & Search for a Range & Search Insert Position
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array
- 从Trie树(字典树)谈到后缀树
- Leetcode Word Break
- 倾城浅笑天涯远
- C3P0死锁问题的解决办法
- 【生活相关】五(学习巴菲特:强大的自制力)
- Search Rotate Position in Sorted Array
- 引用和const引用(笔记)
- POJ 1014 Dividing 这算是优化吗
- Qt模块化笔记之network——TcpServer与监听说明
- Java(二)Java程序设计环境
- 什么是无纺布?无纺布有什么用途?什么是不织布?
- Map的应用(节省空间和时间)
- const int function(const int a,const int b) const的意义
- 冬季热车的注意事项