zoukankan      html  css  js  c++  java
  • [leetcode-540-Single Element in a Sorted Array]

    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.

    思路:

    二分查找。

    class Solution {
    public:
        int singleNonDuplicate(vector<int>& nums)
        {
            int n = nums.size(), left = 0, right = n - 1;
            while (left < right)
            {
                int mid = left + (right - left) / 2;
                if (mid % 2 == 0)
                {
                    if (nums[mid] == nums[mid - 1])right = mid - 2;
                    else if (nums[mid] == nums[mid + 1])left = mid + 2;
                    else return nums[mid];
                }
                else
                {
                    if (nums[mid] == nums[mid - 1])left = mid + 1;
                    else if (nums[mid] == nums[mid + 1])right = mid - 1;
                }
            }
            return nums[left];
        }      
    };
  • 相关阅读:
    闭包
    线程与进程
    异常处理
    socket编程
    面向对象编程
    模块
    正则表达式
    递归、二分查找、冒泡算法
    装饰器
    迭代器与生成器
  • 原文地址:https://www.cnblogs.com/hellowooorld/p/7711249.html
Copyright © 2011-2022 走看看