题解 | #数组中只出现一次的两个数字#

数组中只出现一次的两个数字

https://www.nowcoder.com/practice/389fc1c3d3be4479a154f63f495abff8

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param nums int整型一维数组 
 * @param numsLen int nums数组长度
 * @return int整型一维数组
 * @return int* returnSize 返回数组行数
 */
 //位运算
#include <stdio.h>
int* FindNumsAppearOnce(int* nums, int numsLen, int* returnSize ) {
    // write code here
    int xorResult = 0;
    int bitPos = 0;
    int *data = (int*)calloc(2, sizeof(int));
    for (int i = 0; i < numsLen; i++) {
        xorResult ^= nums[i];
    }

    bitPos = xorResult & (-xorResult);

    for (int i = 0; i < numsLen; i++) {
        if ((nums[i] & bitPos) != 0) {
            data[0] ^= nums[i];                        
        }
        else {
            data[1] ^=nums[i];                        
        }
    }
    if (data[0] > data[1]) {
        int temp = data[0];
        data[0] = data[1];
        data[1] = temp;
    }

    *returnSize = 2;
    return data;
}

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务