NC377. 有序数组中出现一次的元素
描述
示例1
输入:
[1,2,2,3,3]
输出:
1
示例2
输入:
[1,1,5,5,8,8,9,10,10]
输出:
9
C++ 解法, 执行用时: 28ms, 内存消耗: 3888KB, 提交时间: 2022-06-08
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param v int整型vector * @return int整型 */ int singleElement(vector<int>& v) { // write code here int l = 0, r = v.size()-1, m=0; while(l<=r) { m = (l+r)/2; if(v[m]!=v[m+1] && v[m]!=v[m-1]) break; if(m%2==0) { if(v[m]==v[m+1]) { l = m+1; } else r = m-1; } else { if(v[m]==v[m-1]) { l = m+1; } else r = m-1; } } return v[m]; } };
C++ 解法, 执行用时: 29ms, 内存消耗: 3912KB, 提交时间: 2022-07-25
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param v int整型vector * @return int整型 */ int singleElement(vector<int>& v) { int l = 0, r = v.size()-1, m=0; while(l<=r) { m = (l+r)/2; if(v[m]!=v[m+1] && v[m]!=v[m-1]) break; if(m%2==0) { if(v[m]==v[m+1]) { l = m+1; } else r = m-1; } else { if(v[m]==v[m-1]) { l = m+1; } else r = m-1; } } return v[m]; } };
C++ 解法, 执行用时: 30ms, 内存消耗: 3892KB, 提交时间: 2022-07-28
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param v int整型vector * @return int整型 */ int singleElement(vector<int>& v) { // write code here int n = v.size(); if(n==1) return v[0]; int l=0,r = n-1,m=0; while(l<=r) { m = (l+r)/2; if(v[m] != v[m+1] && v[m]!=v[m-1]) break; if(m%2 ==0) { if(v[m] == v[m+1]) l = m+2; else r = m-1; } else { if(v[m] == v[m-1]) l = m+1; else r = m-1; } } return v[m]; } };
C++ 解法, 执行用时: 30ms, 内存消耗: 3908KB, 提交时间: 2022-07-15
class Solution { public: int singleElement(vector<int>& v) { int i = 0, n = v.size() - 1, m = 0; while (i <= n) { m = (i + n) / 2; if (v[m] != v[m + 1] && v[m] != v[m - 1]) break; if (m % 2 == 0) { if (v[m] == v[m + 1]) { i = m + 1; } else n = m - 1; } else { if (v[m] == v[m - 1]) { i = m + 1; } else n = m - 1; } } return v[m]; } };
C++ 解法, 执行用时: 30ms, 内存消耗: 3908KB, 提交时间: 2022-04-13
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param v int整型vector * @return int整型 */ int singleElement(vector<int>& v) { int l=0,r=v.size()-1; while(l<=r) { int m=(l+r)/2; if(m%2!=0) { if(v[m]==v[m-1]) l=m+1; else r=m-1; } else { if(v[m]==v[m+1]) l=m+1; else r=m-1; } } return v[l]; } };