• 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;
    }

  • 相关阅读:
    Vue项目端口号占用
    理解vuex -- vue的状态管理模式
    2018-7-10杂记
    JS 数组操作总结
    JS 字符串操作总结
    【javascript练习题】函数
    【javascript练习题】this指针和作用域
    canal实时同步mysql binlog到rabbitmq
    Hexo+GitHub+Netlify一站式搭建属于自己的博客网站
    Git学习原版手稿
  • 原文地址:https://www.cnblogs.com/Alex0111/p/5378003.html
Copyright © 2020-2023  润新知