[LeetCode] 137. Single Number II

【原题】 Given an array of integers, every element appears three times except for one, which appears exactly once. Find that single one. 【解释】 一个整数数组中,除了一个元素出现一次之外,其余元素都出现了三次,要求找出这个只出现一次的元素。 【思路】 和single number一样使用位操作,但是本题不能一步到位。统计数组中的所有数组在每一位上1出现的次数,若在改位上不为3的倍数,说明在改位上只出现一次的数也为1。于是可以用或操作来保存这一位值并移位。int占32位,所以内层循环操作总共执行32n次。

public class Solution {
    public int singleNumber(int[] nums) {
        int[] count=new int[32];
        int ans=0;
        for(int i=0;i<32;i++){
            for(int j=0;j<nums.length;j++){
                count[i]+=(nums[j]>>i)&1;

            }
            ans|=(count[i]%3)<<i;//当前一位不为3的倍数,说明single number在这里为1
        }
        return ans;
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习入门

LWC 55:712. Minimum ASCII Delete Sum for Two Strings

LWC 55:712. Minimum ASCII Delete Sum for Two Strings 传送门:712. Minimum ASCII Dele...

23370
来自专栏行者常至

009.多线程-AtomicInteger

版权声明:本文为博主原创文章,允许转载,请标明出处。

8420
来自专栏函数式编程语言及工具

泛函编程(25)-泛函数据类型-Monad-Applicative

    上两期我们讨论了Monad。我们说Monad是个最有概括性(抽象性)的泛函数据类型,它可以覆盖绝大多数数据类型。任何数据类型只要能实现flatMap+u...

25590
来自专栏流媒体

Prototype模式简介

用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克...

7610
来自专栏DHUtoBUAA

《剑指Offer》附加题_用两个队列实现一个栈_C++版

  在《剑指Offer》中,在栈和队列习题中,作者留下来一道题目供读者自己实现,即“用两个队列实现一个栈”。   在计算机数据结构中,栈的特点是后进先出,即最后...

32050
来自专栏乐享123

Python编程实战 - 笔记1

20090
来自专栏JavaEdge

"聊胜于无",浅析Java中的原子操作Java的指针Unsafe类i++不是线程安全的1 原子更新基本类型类2 原子更新数组3 AtomicReference(原子更新引用)4 原子更新字段Atomi

66260
来自专栏码匠的流水账

聊聊storm TridentWindowManager的pendingTriggers

本文主要研究一下storm TridentWindowManager的pendingTriggers

15330
来自专栏写代码的海盗

scala如何解决类型强转问题

scala如何解决类型强转问题   scala属于强类型语言,在指定变量类型时必须确定数据类型,即便scala拥有引以为傲的隐式推到,这某些场合也有些有心无力。...

35790
来自专栏鸿的学习笔记

python的装饰器和闭包

因为在编译时,python会认为b是局部变量,这是python的一个设计选择,为了避免变量的污染,想一想。如果某人在函数内部改动了变量,你没有办法看到这个函数,

10210

扫码关注云+社区

领取腾讯云代金券