博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 137. 只出现一次的数字 II(Single Number II)
阅读量:5052 次
发布时间:2019-06-12

本文共 1464 字,大约阅读时间需要 4 分钟。

目录

题目描述:

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

输入: [2,2,3,2]输出: 3

示例 2:

输入: [0,1,0,1,0,1,99]输出: 99

解法:

class Solution {public:    // method 2: FSM(finite state machine)    int singleNumber2(vector
& nums){ // a, b, c // 0 -> 1 -> 2 -> 0 // a -> b -> c -> a int a = 0; // 101101 int b = 0; // 101101 int c = 0; // 101101 int carry = 0; for(int val : nums){ carry = a&val; a |= val; val = carry; carry = b&val; b |= val; val = carry; c = val; // when c has ones, then reset ones in a and b a = a ^(a&c); b = b ^(b&c); } return a; } // method 1: int singleNumber1(vector
& nums) { vector
bits(32, 0); for(int val : nums){ for(int i = 0; i < 32; i++){ if(val&1){ bits[i]++; } val >>= 1; } } int res = 0; for(int i = 31; i >= 0; i--){ res <<= 1; if(bits[i]%3){ res += 1; } } return res; } int singleNumber(vector
& nums) { return singleNumber2(nums); }};

转载于:https://www.cnblogs.com/zhanzq/p/10831375.html

你可能感兴趣的文章
Spring学习(四)-----Spring Bean引用同xml和不同xml bean的例子
查看>>
哲理故事与管理之道(20)-用危机激励下属
查看>>
关于源程序到可运行程序的过程
查看>>
wepy的使用
查看>>
转载:mysql数据库密码忘记找回方法
查看>>
scratch少儿编程第一季——06、人在江湖混,没有背景怎么行。
查看>>
面向对象1
查看>>
在ns2.35中添加myevalvid框架
查看>>
【贪心+DFS】D. Field expansion
查看>>
为什么要使用href=”javascript:void(0);”
查看>>
二进制文件的查看和编辑
查看>>
C# Async与Await的使用
查看>>
Mysql性能调优
查看>>
iOS基础-UIKit框架-多控制器管理-实例:qq界面框架
查看>>
IOS-每个程序员的编程之路上都应该看这11本书
查看>>
自定义tabbar(纯代码)
查看>>
extjs fieldset 和 radio
查看>>
小程序底部导航栏
查看>>
ibatis学习笔记
查看>>
18-ES6(1)
查看>>