137. Single Number II

来源:互联网 发布:淘宝流量钱包不能用了 编辑:程序博客网 时间:2024/06/12 00:50

137. Single Number II           

Given an array of integers, every element appearsthree 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?

        这道题目和上一题single number的不同之处就是重复数字出现三次,最开始想用位运算来解,但是想了好久没有想到,于是就暴力来做,排序,找到单独的元素。

class Solution {public:int singleNumber(vector<int>& nums) {sort(nums.begin(), nums.end());if (nums[0] != nums[1]) return nums[0];for (int i = 1; i < nums.size()-1; i++) {if (nums[i] == nums[i - 1]) continue;else {if (nums[i] == nums[i + 1]) continue;else return nums[i];}}return nums[nums.size() - 1];}};

        看了别人的位运算的解法,很奇妙,确实不好想。但是理解了也比较易懂。


class Solution {public:int singleNumber(vector<int>& nums) {int One = 0, Two = 0; for (int i = 0; i < nums.size(); i++) {One = (~Two) & (One ^ nums[i]);Two = (~One) & (Two ^ nums[i]);}return One;}};











0 0
原创粉丝点击