java二维数组数字数显次数_【每日一题】118.数组中数字出现的次数

f70ffb7541c708373125b425e0871175.gif关注我们获取更多计算机考研信息

b86df759a7c24dabdd5971c93e312230.png

? 今日习题

在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。

示例 1:

输入:nums = [3,4,3,3]

输出:4

示例 2:

输入:nums = [9,1,7,9,7,9,7]

输出:1

限制:

1 <= nums.length <= 10000

1 <= nums[i] < 2^31

f396645f75b195984c1961965cd62d42.png

……⏰ 思考时间……

如果你想好答案了

请查看解题思路和代码实现

我们需要一个长度为32的辅助数组存储二进制表示的每一位的和。由于数组的长度是固定的,因此空间效率是O(1)。

·代码实现·

public class Solution56_2 {

    public int singleNumber(int[] nums) {//本算法同样适用于数组nums中存在负数的情况
        if(nums.length==0) return -1;//输入数组长度不符合要求,返回-1;
        int[] bitSum = new int[32];//java int类型有32位,其中首位为符号位
        int res=0;
        for(int num:nums){
            int bitMask=1;//需要在这里初始化,不能和res一起初始化
            for(int i=31;i>=0;i--){//bitSum[0]为符号位
                //这里同样可以通过num的无符号右移>>>来实现,否则带符号右移(>>)左侧会补符号位,对于负数会出错。
                //但是不推荐这样做,最好不要修改原数组nums的数据
                if((num&bitMask)!=0) bitSum[i]++;//这里判断条件也可以写为(num&bitMask)==bitMask,而不是==1
                bitMask=bitMask<<1;//左移没有无符号、带符号的区别,都是在右侧补0
            }
        }
        for(int i=0;i<32;i++){//这种做法使得本算法同样适用于负数的情况
            res=res<<1;
            res+=bitSum[i]%3;//这两步顺序不能变,否则最后一步会多左移一次
        }
        return res;
    }
}

微信关注“字节408考研”,

免费获取各院校计算机软件考研信息与专业课资料!

21bb22a0846515eb97f86a7b0ad9e92a.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

凤凰os linux界面,让deepin linux系统与凤凰os共用个人目录的方法

下面以deepin为例介绍linux系统与凤凰os(phoenix os)共用个人目录的方法&#xff0c;经过实测&#xff0c;按照以下方法可以成功。背景我的电脑安装的原来是deepin单系统&#xff0c;deepin安装在sda1分区&#xff0c;sda5分区挂载成home分区&#xff0c;我的deepin用户名是key…

微软的转型中?

北京时间8月23日夜&#xff0c;微软在其官网上发表新闻称&#xff0c;微软首席执行官Steve Ballmer将在12个月内退休。 微软在这篇《微软CEO Steve Ballmer将在12个月内退休》新闻中表示&#xff0c;其首席执行官Steve Ballmer已决定将在12个月内退休&#xff0c;尤其是当新的首…

k均值的损失函数_一种基于均值不等式的Listwise损失函数

1 前言1.1 Learning to Rank 简介Learning to Rank (LTR) , 也被叫做排序学习, 是搜索中的重要技术, 其目的是根据候选文档和查询语句的相关性对候选文档进行排序, 或者选取topk文档. 比如在搜索引擎中, 需要根据用户问题选取最相关的搜索结果展示到首页. 下图是搜索引擎的搜索…

sqlite3_exec

函数&#xff1a;sqlite3_exec&#xff08;&#xff09;&#xff0c;称为便捷函数&#xff0c;封装了好多任务。 函数声明&#xff1a; int sqlite3_exec( sqlite * , const char * sql , sqlite_callback , void *data , char ** errmmsg) ; 其中 sqlite* 表示打开的数…

HBase 集群搭建

文章目录 安装前准备兼容性官方网址 集群搭建搭建 Hadoop 集群搭建 Zookeeper 集群解压缩安装配置文件高可用配置分发 HBase 文件 服务的启停启动顺序停止顺序 验证进程查看 Web 端页面 安装前准备 兼容性 1&#xff09;与 Zookeeper 的兼容性问题&#xff0c;越新越好&#…

四叉树碰撞优化版,速度飞一样

http://bbs.9ria.com/thread-243675-1-1.html转载于:https://www.cnblogs.com/chenhongyu/p/3283165.html

在哪个Linux发行版上运行python,怎么在linux上运行python

Linux默认是已经安装好了Python程序目前来说&#xff0c;大多数的Linux发行版是安装了两个版本的Python程序一个是Python 2.x一个是Python 3.x一些系统自带的程序文件需要Python 2的支持&#xff0c;另外Python 3又是大势所趋所以&#xff0c;我们最好不要动系统的Python版本需…

职场上个人的核心技术_职场上,这3种人表面老实,实际却是个“高手”,要远离...

职场上&#xff0c;这3种人表面老实&#xff0c;实际却是个“高手”&#xff0c;要远离&#xff01;在职场生活中&#xff0c;每一步都需要走好&#xff0c;因为你不慎走错了一步也就可能满盘皆输。而公司里面也有一种比较特殊的情况&#xff0c;也就是有这么3种类型的人&#…

使用SQLite3存储和读取数据

SQLite3是嵌入在iOS中的关系型数据库&#xff0c;对于存储大规模的数据很有效。SQLite3使得不必将每个对象都加到内存中。 基本操作&#xff1a; &#xff08;1&#xff09;打开或者创建数据库 sqlite3 *database; int result sqlite3_open("/path/databaseFile"…

NCBI SRA数据预处理

SRA数据的的处理流程大概如下 一、SRA数据下载、 NCBI 上存储的数据现在大都存储为SRA格式。 下载以后就是以SRA为后缀名。 这里可以通过三种方式下载SRA格式的数据。 1.通过http方式&#xff0c;2.通过ftp方式&#xff0c;3.通过Aspera Aspera可以在NCBI网站上下载。 参阅&…

化浆池是什么东西_一种双工位浆化池的制作方法

本发明涉及铋矿用生产设备技术领域&#xff0c;具体的说是一种双工位浆化池。背景技术&#xff1a;铋在自然界中以游离金属和矿物的形式存在。铋的主要矿物有自然铋辉铋矿、铋华、以及菱铋矿、铜铋矿等&#xff0c;其中以辉铋矿与铋华为最重要。铋的矿物大都与钨、钼、铅、锡、…

Linux下,sqlite简单实例

#include "stdlib.h"#include "stdio.h"#include "sqlite3.h"int main(){charcSql[1024] {0};sqlite3*pSql NULL;char *pError NULL;int i 0, j 0;char**ppTableData NULL;int nRow 0, nColumn 0;int pos 0;//打开数据库sqlite3_open("…

linux编程参数列表,Linux编程 14 文件权限(用户列表passwd,用户控制shadow,useradd模板与useradd命令参数介绍)...

一. 概述linux安全系统的核心是用户账户。 创建用户时会分配用户ID(UID)。 UID是唯一的&#xff0c;但在登录系统时不是用UID&#xff0c;而是用登录名。在讲文件权限之之前&#xff0c;先了解下linux是怎样处理用户账户的。以及用户账户需要的文件和工具&#xff0c;这样处理文…

GitHub托管BootStrap资源汇总(持续更新中…)

Twitter BootStrap已经火过大江南北&#xff0c;对于无法依赖美工的程序员来说&#xff0c;这一成熟前卫的前端框架简直就一神器&#xff0c;轻轻松松地实现出专业的UI效果。GitHub上相关的的开源项目更是层出不穷&#xff0c;在此整理列举一些感觉不错的组件或增强实现&#x…

Sqlite3_prepare

这个函数将sql文本转换成一个准备语句&#xff08;prepared statement&#xff09;对象&#xff0c;同时返回这个对象的指针。这个接口需要一个数据库连接指针以及一个要准备的包含SQL语句的文本。它实际上并不执行&#xff08;evaluate&#xff09;这个SQL语句&#xff0c;它仅…

python爬虫框架scrapy实例详解_python爬虫框架scrapy实例详解

生成项目scrapy提供一个工具来生成项目&#xff0c;生成的项目中预置了一些文件&#xff0c;用户需要在这些文件中添加自己的代码。打开命令行&#xff0c;执行&#xff1a;scrapy startproject tutorial&#xff0c;生成的项目类似下面的结构tutorial/scrapy.cfgtutorial/__in…

themyleaf 图片上传_javaEE --springboot #实现图片上传和回显 #单文件上传 #多文件上传 #ajax异步文件上传 (非常详细,从创建项目开始)...

实现文件上传和回显1、新建一个SpringBoot项目&#xff0c;选择 Spring Web 和 thymeleaf 依赖 。pow.xml文件下的依赖如下2、根据下图&#xff0c;创建如下文件3、直接上代码配置文件 application.xmlserver:port: 8005file:upload:path: F://upload/relationImg: /images/配置…

sqlite3_setp

这个过程用于执行有前面sqlite3_prepare创建的准备语句。这个语句执行到结果的第一行可用的位置。继续前进到结果的第二行的话&#xff0c;只需再次调用sqlite3_setp()。继续调用sqlite3_setp()知道这个语句完成&#xff0c;那些不返回结果的语句&#xff08;如&#xff1a;INS…

aix linux运维,运维老司机分享的八个AIX日常运维经验及案例

原文来自微信公众号&#xff1a;AIX专家俱乐部【经验分享】在AIX启动时&#xff0c;打开debug模式经常遇到aix无法启动&#xff0c;但又不知道pending在哪&#xff0c;因此打开启动过程的debug模式&#xff0c;对于诊断问题有很大的帮帮助。下面是打开debug的方法&#xff1a;打…

Mysql找不到mysql.sock怎么办?

1. #ps -aux|grep mysql 找mysql的进程. #kill mysql进程号 确定全部kill光 2.直接跳第3步&#xff0c;无效再使用第2步 /usr/local/mysql/bin/mysqld_safe --usermysql & 启动mysql. bin/mysql -u root -p 登陆mysql 3. 重启mysql服务&#xff0c;可以到mysql的安装目录下…