zoukankan      html  css  js  c++  java
  • 1183. 排序数组中的单个元素

    描述

    给定一个排序数组,只包含整数,其中每个元素出现两次,除了一个出现一次的元素。 找到只出现一次的单个元素。

    例1:

    输入:[1,1,2,3,3,4,4,8,8]
    输出:2

    例2:

    输入:[3,3,7,7,10,11,11]
    输出:10

    您的解决方案应在O(log n)时间和O(1)空间中运行。

    class Solution {
    public:
        /**
         * @param nums: a list of integers
         * @return: return a integer
         */
        int singleNonDuplicate(vector<int> &nums) {
            // write your code here
            return findn(0, nums.size()-1, nums);
        
        }
        int findn(int l, int r, vector<int> &nums) {
            if (l==r) return nums[l];
            int mid = (l+r) / 2;
            if (mid%2 == 0) {
                if (nums[mid]==nums[mid-1]) findn(l, mid-2, nums);
                else if (nums[mid]==nums[mid+1]) findn(mid+2, r, nums);
                else return mid;
            }
            else if (mid%2 == 1) {
                if (nums[mid]==nums[mid-1]) findn(mid+1, r, nums);
                else if (nums[mid]==nums[mid+1]) findn(l, mid-1, nums);
                else return mid;
            }
        }
    };
    
  • 相关阅读:
    双线性过滤
    textureView
    cubemap
    selfshadow
    cbuffer padding
    异常
    Python深浅拷贝
    数据类型分类
    集合类型内置方法
    字典数据类型内置方法
  • 原文地址:https://www.cnblogs.com/narjaja/p/9803555.html
Copyright © 2011-2022 走看看