当前位置:网站首页>[算法] 剑指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)
}
测试
边栏推荐
- Remember an experience of ECS being blown up by passwords - closing a small black house, changing passwords, and changing ports
- 1041 Be Unique (20 point(s))(哈希:找第一个出现一次的数)
- Fabrication of fairygui simple Backpack
- (1) Introduction Guide to R language - the first step of data analysis
- [offer9] implement queues with two stacks
- Agile development helps me
- 【rtklib】在rtk下使用抗差自适应卡尔曼滤波初步实践
- Unity3d makes the registration login interface and realizes the scene jump
- Knowledge system of digital IT practitioners | software development methods -- agile
- MySQL error warning: a long semaphore wait
猜你喜欢
随机推荐
Intermediate use tutorial of postman [environment variables, test scripts, assertions, interface documents, etc.]
Compilation principle: preprocessing of source program and design and implementation of lexical analysis program (including code)
2021.11.10汇编考试
(the first set of course design) sub task 1-5 317 (100 points) (dijkstra: heavy edge self loop)
Expected value (EV)
Esp8266 connect onenet (old mqtt mode)
ORA-02030: can only select from fixed tables/views
FairyGUI复选框与进度条的组合使用
Agile development helps me
RTKLIB: demo5 b34f.1 vs b33
[offer9]用两个栈实现队列
1041 be unique (20 points (s)) (hash: find the first number that occurs once)
Introduction to the daily practice column of the Blue Bridge Cup
idea问题记录
Mixed use of fairygui button dynamics
First use of dosbox
How to add music playback function to Arduino project
Prove the time complexity of heap sorting
[Nodejs] 20. Koa2 onion ring model ----- code demonstration
[Clickhouse kernel principle graphic explanation] about the collaborative work of partitioning, indexing, marking and compressed data