leetcode Single Number & Single Number ||

来源:互联网 发布:哥德尔和人工智能 编辑:程序博客网 时间:2024/06/11 19:35


Single Number

方法一:因为题目要求线性时间O(n),也就是在循环内不能再次出现循环,但是在循环外可以添加循环(这一点是我在网上看到的,根据这个思路做出来结果是Accept),可以先将数组排序,则相同的会相邻

方法二:根据异或的性质,对所有数进行异或,最后的结果即为单个数

方法一代码

class Solution{public:int singleNumber(int A[], int n){sort(A, A+n);//针对n-1个偶数进行判断for(int i = 0; i < n-2; ++i){if(A[i] == A[i+1])++i;elsereturn A[i];}//表明最后一个数即为单数return A[n-1];}};


方法二代码

class Solution {public:    int singleNumber(int A[], int n){int result = 0;for(int i = 0; i < n; ++i)result ^= A[i];return result;}};



Single Number ||

与上面方法一类似

代码

class Solution {public:    int singleNumber(int A[], int n){sort(A, A+n);for(int i = 0; i < n-3; ++i){if(A[i] == A[i+1]&&A[i+1]==A[i+2])i += 2;elsereturn A[i];}return A[n-1];}};




0 0