【C++】【LeetCode】33. Search in Rotated Sorted Array
来源:互联网 发布:常见的数据备份方式 编辑:程序博客网 时间:2024/05/20 15:57
题目
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).
You are given a target value to search. If found in the array return its index, otherwise return -1.
You may assume no duplicate exists in the array.
思路
数组其实就是原来的数组分成了两部分,判断target是在前半部分还是后半部分,然后按照二分查找即可。
代码
第一次代码:LeetCode上的代码写的很简洁,但是按照我自己的思路写出来的代码就是分了很多判断分支。
class Solution {public: int search(vector<int>& nums, int target) { int left = 0; int right = nums.size()-1; while (left < right) { int mid = (left + right) / 2; if (target == nums[mid]) { return mid; } else if (target == nums[0]) { return 0; } else if ((target > nums[0]) && (nums[mid] > nums[0]) && (target < nums[mid])) { right = mid - 1; } else if (target > nums[0] && nums[mid] < nums[0]){ right = mid - 1; } else if ((target > nums[0]) && (nums[mid] > nums[0]) && (target > nums[mid])) { left = mid + 1; } else if (target < nums[0] && nums[mid] > nums[0]) { left = mid + 1; } else if (target < nums[0] && nums[mid] < nums[0] && target < nums[mid]) { right = mid - 1; } else if (target < nums[0] && nums[mid] < nums[0] && target > nums[mid]) { left = mid + 1; } else { left++; } } if (left == right && target == nums[left]) { return left; } return -1; }};
第二次代码:把之前的代码稍稍进行了修改,看上去略清楚一些。
class Solution {public: int search(vector<int>& nums, int target) { int left = 0; int right = nums.size()-1; while (left < right) { int mid = (left + right) / 2; if (target == nums[mid]) { return mid; } else if (target == nums[0]) { return 0; } else if ( (nums[mid] > target && target > nums[0]) || (target > nums[0] && nums[0] > nums[mid]) || (nums[0] > nums[mid] && nums[mid] > target)){ right = mid - 1; } else if ( (target > nums[mid] && nums[mid] > nums[0]) || (nums[mid] > nums[0] && nums[0] > target) || (nums[0] > target && target > nums[mid]) ) { left = mid + 1; } else { left++; } } if (left == right && target == nums[left]) { return left; } return -1; }};
阅读全文
0 0
- 【C++】【LeetCode】33. Search in Rotated Sorted Array
- [LeetCode]33.Search in Rotated Sorted Array
- LeetCode --- 33. Search in Rotated Sorted Array
- LeetCode 33.Search in Rotated Sorted Array
- [Leetcode] 33. Search in Rotated Sorted Array
- Leetcode-33.Search in Rotated Sorted Array.
- [leetcode] 33. Search in Rotated Sorted Array
- Leetcode 33. Search in Rotated Sorted Array
- [LeetCode]33. Search in Rotated Sorted Array
- leetcode 33. Search in Rotated Sorted Array
- LeetCode *** 33. Search in Rotated Sorted Array
- LeetCode - 33. Search in Rotated Sorted Array
- LeetCode 33. Search in Rotated Sorted Array
- leetcode 33. Search in Rotated Sorted Array
- leetcode 33.Search in Rotated Sorted Array
- [leetcode]33. Search in Rotated Sorted Array
- leetcode 33. Search in Rotated Sorted Array
- leetcode 33. Search in Rotated Sorted Array
- Java中日期型数据的比较及计算
- Activiti工作流(一)
- python 安装cvxopt
- 斯坦福cs231n(一)
- Mac android studio 快捷键
- 【C++】【LeetCode】33. Search in Rotated Sorted Array
- Visual Studio Code + python 开发环境搭建
- Thinkphp5学习(16)查询范围
- Linux netstat命令详解
- Is Subsequence
- 华为Java编程规范
- C语言结构体,联合体,枚举与typedef
- Linux常用命令分类
- opencv之大津法Otsu介绍