题解 | #农场牛的标识II#

农场牛的标识II

https://www.nowcoder.com/practice/a69dc54eeffa43218d06f62cc733c6c0

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型一维数组
     * @return int整型
     */
    public int singleNumberII (int[] nums) {
        // write code here
        int ones = 0; // 记录出现一次的位
        int twos = 0; // 记录出现两次的位

        for (int num : nums) {
            // 更新出现两次的位
            twos |= (ones & num);

            // 更新出现一次的位
            ones ^= num;

            // 出现三次的位清零
            int threeMask = ~(ones & twos);
            ones &= threeMask;
            twos &= threeMask;
        }

        return ones;
    }
}
  • 遍历数组中的每个元素,利用位运算来找出只出现了一次的牛的标识。
  • 假设一个整数需要3个位来表示,分别是abc,那么对于某个位而言,它出现了1次和出现了3次的情况是不影响最终结果的。因此,我们可以使用两个变量onestwos来记录当前位上出现了1次和2次的情况。
  • 遍历数组中的每个元素,根据当前位的状态更新onestwos
  • 返回ones作为结果。
全部评论

相关推荐

07-18 18:45
已编辑
中山职业技术学院 Java
投递TP-LINK等公司7个岗位
点赞 评论 收藏
分享
07-03 16:13
嘉应学院 Python
xiaolihuam...:很明显骗子,如果是hr直接约你面试了,哪用得着内推,如果是员工的话,你得多优秀,一线员工直接加你微信,
点赞 评论 收藏
分享
06-17 00:26
门头沟学院 Java
程序员小白条:建议换下项目,智能 AI 旅游推荐平台:https://github.com/luoye6/vue3_tourism_frontend 智能 AI 校园二手交易平台:https://github.com/luoye6/vue3_trade_frontend GPT 智能图书馆:https://github.com/luoye6/Vue_BookManageSystem 选项目要选自己能掌握的,然后最好能自己拓展的,分布式这种尽量别去写,不然你只能背八股文了,另外实习的话要多投,尤其是学历不利的情况下,多找几段实习,最好公司title大一点的
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务