当前位置:网站首页>[算法] 剑指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)
}
测试

边栏推荐
- Unity场景跳转及退出
- Excel导入,导出功能实现
- idea中好用的快捷键
- FairyGUI简单背包的制作
- MySQL shutdown is slow
- Particle system for introduction to unity3d Foundation (attribute introduction + case production of flame particle system)
- 基本Dos命令
- It has been solved by personal practice: MySQL row size too large (> 8126) Changing some columns to TEXT or BLOB or using ROW_ FORMAT
- First use of dosbox
- Design and implementation of general interface open platform - (39) simple and crude implementation of API services
猜你喜欢

ORA-02030: can only select from fixed tables/views

dosbox第一次使用

FairyGUI人物状态弹窗

NRF24L01 troubleshooting

Fabrication of fairygui simple Backpack

Force buckle 1189 Maximum number of "balloons"
![[Clickhouse kernel principle graphic explanation] about the collaborative work of partitioning, indexing, marking and compressed data](/img/28/221b0a51ef5f2e8ed5aeca2de8f463.jpg)
[Clickhouse kernel principle graphic explanation] about the collaborative work of partitioning, indexing, marking and compressed data

SVN更新后不出现红色感叹号

Office prompts that your license is not genuine pop-up box solution

(1) Introduction Guide to R language - the first step of data analysis
随机推荐
@The difference between Autowired and @resource
[offer78]合并多个有序链表
HCIP Day 12
[offer29] sorted circular linked list
Particle system for introduction to unity3d Foundation (attribute introduction + case production of flame particle system)
Unity scene jump and exit
Agile development helps me
Gravure sans fil Bluetooth sur micro - ordinateur à puce unique
Meanings and differences of PV, UV, IP, VV, CV
MySQL error warning: a long semaphore wait
(5) Introduction to R language bioinformatics -- ORF and sequence analysis
[offer18] delete the node of the linked list
Matlab读取GNSS 观测值o文件代码示例
Easy to use shortcut keys in idea
idea问题记录
GNSS定位精度指标计算
基于rtklib源码进行片上移植的思路分享
Unity3D基础入门之粒子系统(属性介绍+火焰粒子系统案例制作)
Game 280 weekly
Latex learning