当前位置:网站首页>[算法] 剑指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)
}
测试
边栏推荐
- idea问题记录
- Intermediate use tutorial of postman [environment variables, test scripts, assertions, interface documents, etc.]
- MySQL時間、時區、自動填充0的問題
- 抗差估计在rtklib的pntpos函数(标准单点定位spp)中的c代码实现
- Vulnhub target: hacknos_ PLAYER V1.1
- How to add music playback function to Arduino project
- First use of dosbox
- FairyGUI条子家族(滚动条,滑动条,进度条)
- Prove the time complexity of heap sorting
- KF UD分解之UD分解基础篇【1】
猜你喜欢
Conditional probability
Prove the time complexity of heap sorting
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
Affichage du changement de valeur du Buff de gain de l'interface graphique de défaillance
ORA-02030: can only select from fixed tables/views
FairyGUI增益BUFF数值改变的显示
Latex learning
FairyGUI条子家族(滚动条,滑动条,进度条)
Office prompts that your license is not genuine pop-up box solution
SVN更新后不出现红色感叹号
随机推荐
FairyGUI循環列錶
Lean product development - Lean Software Development & lean product development
SVN更新后不出现红色感叹号
[offer18] delete the node of the linked list
Solution to the problem of automatic login in Yanshan University Campus Network
ORA-02030: can only select from fixed tables/views
Comparative analysis of the execution efficiency of MySQL 5.7 statistical table records
Fairygui gain buff value change display
Guided package method in idea
单片机蓝牙无线烧录
It has been solved by personal practice: MySQL row size too large (> 8126) Changing some columns to TEXT or BLOB or using ROW_ FORMAT
MySQL performance tuning - dirty page refresh
如何给Arduino项目添加音乐播放功能
(core focus of software engineering review) Chapter V detailed design exercises
HCIP Day 12
[899] ordered queue
Particle system for introduction to unity3d Foundation (attribute introduction + case production of flame particle system)
Servlet
Unity3D基础入门之粒子系统(属性介绍+火焰粒子系统案例制作)
About using @controller in gateway