540. Single Element in a Sorted Array
来源:互联网 发布:淘宝排名查询流量 编辑:程序博客网 时间:2024/05/20 12:21
题目的要求是:给定一个排好序的数组,数组中只有一个数出现一次,其他的数字都出现两次,要我们找到出现一次的数字。算法的时间复杂度要求是O(log N),空间复杂度为O(1)。例子如下:
Example 1:
Input: [1,1,2,3,3,4,4,8,8]Output: 2
Example 2:
Input: [3,3,7,7,10,11,11]Output: 10
Note: Your solution should run in O(log n) time and O(1) space.
1. nums[mid] = nums[mid-1],则数组可以分为【front,mid-2】跟【mid+1,rear】两部分,其中只出现一次的数字在长度为奇数的部分中,在该部分中重复查找;
2. nums[mid] = nums[mid+1],则数组可以分为【front+1,mid-1】跟【mid+2,rear】两部分,其中只出现一次的数字在长度为奇数的部分中,在该部分中重复查找;
3. nums[mid] != nums[mid-1]同时nums[mid] != nums[mid+1],说明nums[mid]就是只出现一次的数字。
所以,按照上面的思路,代码如下:
class Solution {public: int singleNonDuplicate(vector<int>& nums) { int front = 0; int rear = nums.size() - 1; int mid; while (front <= rear) { mid = (front + rear) / 2; if (nums[mid] == nums[mid-1]) { if ((mid - 1 - front) % 2) rear = mid - 2; else front = mid + 1; } else if (nums[mid] == nums[mid+1]) { if ((mid - front) % 2) rear = mid - 1; else front = mid + 2; } else { break; } } return nums[mid]; }};
阅读全文
0 0
- 540. Single Element in a Sorted Array
- 540. Single Element in a Sorted Array
- 540. Single Element in a Sorted Array
- 540. Single Element in a Sorted Array
- 540. Single Element in a Sorted Array
- 540. Single Element in a Sorted Array
- 540. Single Element in a Sorted Array
- 540. Single Element in a Sorted Array
- 540. Single Element in a Sorted Array
- 540. Single Element in a Sorted Array
- LeetCode (Single Element in a Sorted Array)
- Single Element in a Sorted Array
- Single Element in a Sorted Array
- Single Element in a Sorted Array
- LeetCode | 540. Single Element in a Sorted Array
- {LeetCode} 540. Single Element in a Sorted Array
- LeetCode 540. Single Element in a Sorted Array
- LeetCode 540. Single Element in a Sorted Array
- 关于JavaScript获取元素
- Python项目实战-接触TuShare财经数据包
- 讲课内容
- (指针) 从第一个字母开始间隔输出字符串
- Scala的模式匹配和正则表达式
- 540. Single Element in a Sorted Array
- 反序列化漏洞的末日?JEP290机制研究
- Java的参数传递
- java学习笔记
- TCP/IP网络编程(一)
- Effective 阅读笔记---条款29"为异常安全而努力是值得的"
- WEEK8 java 作业
- Android常见代码颜色
- 算法(十一)拓扑排序