zoukankan      html  css  js  c++  java
  • 260. Single Number III

    260. Single Number III

     
     
    Total Accepted: 30927 Total Submissions: 71149 Difficulty: Medium

    Given an array of numbers nums, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.

    For example:

    Given nums = [1, 2, 1, 3, 2, 5], return [3, 5].

    Note:

      1. The order of the result is not important. So in the above example, [5, 3] is also correct.
      2. Your algorithm should run in linear runtime complexity. Could you implement it using only constant space complexity?

    Code:

    /**
     * Return an array of size *returnSize.
     * Note: The returned array must be malloced, assume caller calls free().
     */
    int* singleNumber(int* nums, int numsSize, int* returnSize) {
        int num = 0;
        int i;
        int *tmp = (int*)malloc(2*sizeof(int));
        for(i = 0;i<numsSize;i++)
            num ^= nums[i];
        int lowBit = 1;
        while(!(lowBit&num))
        {
            lowBit<<=1;
        }
        tmp[0] = 0;
        tmp[1] = 0;
        for(i = 0;i<numsSize;i++)
        {
            if((nums[i]&lowBit) != 0)
            {
                tmp[0] ^= nums[i];
            }
            else
            {
                tmp[1] ^= nums[i];
            }
        }
        *returnSize = 2;
        return tmp;
    }

  • 相关阅读:
    nginx常用模块(三)
    Nmap脚本文件分析(AMQP协议为例)
    Nmap脚本引擎原理
    小型Basic编译器问题
    Nmap原理02
    基于Docker搭建GitLab服务器
    关于Telnet使用
    Linux系统搭建GitLab---阿里云Centos7搭建Gitlab踩坑
    Vi文本编辑器
    Linux 奇技淫巧之常用指令
  • 原文地址:https://www.cnblogs.com/Alex0111/p/5378003.html
Copyright © 2011-2022 走看看