当前位置:网站首页>[算法] 剑指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)
}
测试
边栏推荐
- PRIDE-PPPAR源码解析
- FairyGUI复选框与进度条的组合使用
- [Yu Yue education] guide business reference materials of Wuxi Vocational and Technical College of Commerce
- [offer29] sorted circular linked list
- 第一人称视角的角色移动
- ORA-02030: can only select from fixed tables/views
- Compilation principle: preprocessing of source program and design and implementation of lexical analysis program (including code)
- Unity场景跳转及退出
- Fairygui joystick
- 音乐播放(Toggle && PlayerPrefs)
猜你喜欢
(core focus of software engineering review) Chapter V detailed design exercises
FairyGUI簡單背包的制作
Unity场景跳转及退出
Fairygui loop list
FairyGUI增益BUFF数值改变的显示
Unity3D,阿里云服务器,平台配置
Single chip Bluetooth wireless burning
KF UD分解之UD分解基础篇【1】
Fairygui joystick
Remember an experience of ECS being blown up by passwords - closing a small black house, changing passwords, and changing ports
随机推荐
[Offer29] 排序的循环链表
(the first set of course design) sub task 1-5 317 (100 points) (dijkstra: heavy edge self loop)
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
Unity3D摄像机,键盘控制前后左右上下移动,鼠标控制旋转、放缩
MySQL error warning: a long semaphore wait
2021.11.10 compilation examination
HCIP Day 12
RTKLIB: demo5 b34f.1 vs b33
dosbox第一次使用
It has been solved by personal practice: MySQL row size too large (> 8126) Changing some columns to TEXT or BLOB or using ROW_ FORMAT
Idea problem record
(core focus of software engineering review) Chapter V detailed design exercises
Affichage du changement de valeur du Buff de gain de l'interface graphique de défaillance
[899] ordered queue
Fabrication of fairygui simple Backpack
KF UD分解之伪代码实现进阶篇【2】
[Nodejs] 20. Koa2 onion ring model ----- code demonstration
Unity scene jump and exit
Fairygui gain buff value change display
Liste des boucles de l'interface graphique de défaillance