首页 > 编程 > C++ > 正文

137. Single Number II(C++)

2019-11-06 06:32:37
字体:
来源:转载
供稿:网友

题目:

Given an array of integers, every element appears three times except for one, which appears exactly once. Find that single one.

Note:

Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

翻译

给定一个整数数组,每个元素出现三次,除了一个,它只出现一次。 找到这单独的一个。

注意:

您的算法应具有线性运行时复杂性。 你能实现它,而不使用额外的内存。

思路:

设置mask用来比对每一位上的数是否出现多余1,一步步还原只有一个的那个数。

解答:

class Solution {public: int singleNumber(vector<int>& nums) { int ret = 0; int mask = 1; while (mask) { int countOne = 0; for (int i = 0; i < nums.size(); i++) { if (nums[i] & mask)//获得与mask相应位上的值 countOne++; } if (countOne % 3 == 1) ret |= mask; mask <<= 1;//每回合mask进位 } return ret;}};
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选