LeeCode 540. Single Element in a Sorted Array
2017-11-11 23:34
483 查看
原题 :
Given a sorted array consisting of only integers where every element appears twice except for one element which appears once. Find this single element that appears only once.
Example 1:
Example 2:
Note: Your solution should run in O(log n) time and O(1) space.
中文概要:
一个有序数组,除了某一个元素外其他元素出现2次,找出那个元素。要求时间O(logn)空间O(1)
题解 :
时间logn明显是二分,那么二分的判断条件是什么?
从第二个例子可以看出,位于偶数位上的数字,其下一个(奇数位)与其相同,直到10出现,其后面的偶数位与其上一个相同,我们可以利用
这点进行二分。
若mid 为偶数,则比较arr[mid] 和arr[mid+1],若相同,则目标在后半部,bengin = mid;否则end= mid
若mid 为奇数,则比较arr[mid] 和arr[mid-1],结论同上
上面第一个例子,begin = 0; end = 8,mid = 4, 4是偶数, arr[4] = 3,arr[5] = 4,偶数位与上一个相同,说明出现仅一次的元素已经出现,在前半部,
故令end = 4
第二轮,begin = 0, end = 4, mid = 2,2是偶数, arr[2] = 2, arr[3] = 3, 偶数位与下一个不同,在前半部,end= 2
第三轮, begin = 0,end = 2,mid = 1, 1是奇数, arr[1] = 1.arr[0] = 1 ,偶数位与下一个相同,在后半部, begin = 1;
此时begin= end-1;结束循环,进行最后判断。
若begin为奇数,比较arr[begin] 和arr[begin-1],相同 arr[end]为目标,否则arr[begin]为目标;
若begin为偶数,比较arr[begin] 和arr[begin+1],相同 arr[end]为目标,否则arr[begin]为目标;
Given a sorted array consisting of only integers where every element appears twice except for one element which appears once. Find this single element that appears only once.
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.
中文概要:
一个有序数组,除了某一个元素外其他元素出现2次,找出那个元素。要求时间O(logn)空间O(1)
题解 :
时间logn明显是二分,那么二分的判断条件是什么?
从第二个例子可以看出,位于偶数位上的数字,其下一个(奇数位)与其相同,直到10出现,其后面的偶数位与其上一个相同,我们可以利用
这点进行二分。
若mid 为偶数,则比较arr[mid] 和arr[mid+1],若相同,则目标在后半部,bengin = mid;否则end= mid
若mid 为奇数,则比较arr[mid] 和arr[mid-1],结论同上
上面第一个例子,begin = 0; end = 8,mid = 4, 4是偶数, arr[4] = 3,arr[5] = 4,偶数位与上一个相同,说明出现仅一次的元素已经出现,在前半部,
故令end = 4
第二轮,begin = 0, end = 4, mid = 2,2是偶数, arr[2] = 2, arr[3] = 3, 偶数位与下一个不同,在前半部,end= 2
第三轮, begin = 0,end = 2,mid = 1, 1是奇数, arr[1] = 1.arr[0] = 1 ,偶数位与下一个相同,在后半部, begin = 1;
此时begin= end-1;结束循环,进行最后判断。
若begin为奇数,比较arr[begin] 和arr[begin-1],相同 arr[end]为目标,否则arr[begin]为目标;
若begin为偶数,比较arr[begin] 和arr[begin+1],相同 arr[end]为目标,否则arr[begin]为目标;
相关文章推荐
- lettcode:540. Single Element in a Sorted Array(已排序数组中出现一次的数字,其他数字出现两次)
- 540. Single Element in a Sorted Array
- 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 解题报告
- 540. Single Element in a Sorted Array Difficulty:Medium
- leetcode 540. Single Element in a Sorted Array
- 540. Single Element in a Sorted Array
- 【LeetCode】540. Single Element in a Sorted Array
- LeetCode 540. Single Element in a Sorted Array (Medium)
- LeetCode 540. Single Element in a Sorted Array
- LeetCode | 540. Single Element in a Sorted Array
- 540. Single Element in a Sorted Array
- 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 题解
- 540. Single Element in a Sorted Array
- [LeetCode] 540. Single Element in a Sorted Array