当前位置:网站首页>[算法] 剑指offer2 golang 面试题4:只出现一次的数字
[算法] 剑指offer2 golang 面试题4:只出现一次的数字
2022-07-06 09:18:00 【邓嘉文Jarvan】
[算法] 剑指offer2 golang 面试题4:只出现一次的数字
题目1:
给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。
示例 1:
输入:nums = [2,2,3,2]
输出:3
示例 2:
输入:nums = [0,1,0,1,0,1,100]
输出:100
提示:
1 <= nums.length <= 3 * 104
-231 <= nums[i] <= 231 - 1
nums 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次
进阶:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/WGki4K
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路1:
//思路: 出现3次,使用 bs []int 来记录 32 个位数的 1 的个数
//如果 bs[i] 的个数是 0 或者 3 的倍数,就让 bs[i] = 0,反之 bs[i] =1
//最后素材 bs => int
代码
func singleNumber(nums []int) int {
//思路: 出现3次,使用 bs []int 来记录 32 个位数的 1 的个数
//如果 bs[i] 的个数是 0 或者 3 的倍数,就让 bs[i] = 0,反之 bs[i] =1
//最后素材 bs => int
//参数处理
if len(nums) == 0 {
return 0
}
//构造 bs
bs := make([]int,32)
//遍历元素给 bs 赋值
for i := 0; i < len(nums); i++ {
for j := 0; j < 32; j++ {
if (nums[i] & (1<<j)) != 0 {
bs[j] ++
}
}
}
//bs[i] 的个数是 0 或者 3 的倍数,就让 bs[i] = 0,反之 bs[i] =1
for j := 0; j < 32; j++ {
if bs[j]%3 != 1 {
bs[j] = 0
}else {
bs[j] = 1
}
}
//格式化 bs 为 res int
//tips: bug golang 64 位机器 int 就是 64 位
var res int32
for j := 0; j < 32; j++ {
if bs[j] == 1 {
res = res | (1 << j)
}
}
return int(res)
}
测试
边栏推荐
- 單片機藍牙無線燒錄
- rtklib单点定位spp使用抗差估计遇到的问题及解决
- Unity3d makes the registration login interface and realizes the scene jump
- MySQL shutdown is slow
- Programming homework: educational administration management system (C language)
- FairyGUI循環列錶
- Unity3D制作注册登录界面,并实现场景跳转
- 数据库课程设计:高校教务管理系统(含代码)
- 如何给Arduino项目添加音乐播放功能
- CUDA C programming authoritative guide Grossman Chapter 4 global memory
猜你喜欢
Combination of fairygui check box and progress bar
FairyGUI摇杆
Mysql database reports an error: row size too large (> 8126) Changing some columns to TEXT or BLOB or using ROW_ FORMAT=DY
FGUI工程打包发布&导入Unity&将UI显示出来的方式
单片机蓝牙无线烧录
Unity3D基础入门之粒子系统(属性介绍+火焰粒子系统案例制作)
FairyGUI循環列錶
Fairygui character status Popup
(5) Introduction to R language bioinformatics -- ORF and sequence analysis
The master of double non planning left the real estate company and became a programmer with an annual salary of 25W. There are too many life choices at the age of 25
随机推荐
Meanings and differences of PV, UV, IP, VV, CV
C programming exercise
341. Flatten nested list iterator
Minio file download problem - inputstream:closed
(课设第一套)1-5 317号子任务 (100 分)(Dijkstra:重边自环)
[Nodejs] 20. Koa2 onion ring model ----- code demonstration
Mysql database reports an error: row size too large (> 8126) Changing some columns to TEXT or BLOB or using ROW_ FORMAT=DY
Compilation principle: preprocessing of source program and design and implementation of lexical analysis program (including code)
Containers and Devops: container based Devops delivery pipeline
isEmpty 和 isBlank 的用法区别
Comparative analysis of the execution efficiency of MySQL 5.7 statistical table records
Remember an experience of ECS being blown up by passwords - closing a small black house, changing passwords, and changing ports
Expected value (EV)
idea中导包方法
Unity3d camera, the keyboard controls the front and rear left and right up and down movement, and the mouse controls the rotation, zoom in and out
FairyGUI复选框与进度条的组合使用
[offer9] implement queues with two stacks
Derivation of logistic regression theory
[Offer29] 排序的循环链表
[offer29] sorted circular linked list