代码编织梦想

题目

剑指 Offer II 004. 只出现一次的数字

在这里插入图片描述

思路

本题需要用二进制的思路来看。一个整数由32位组成。我们可以将数组中所有数字的同一位置的数位相加,数组中除了那个只出现一次的数以外,其他的数相加的结果中,每一位一定是3的倍数(因为都出现3次嘛)

然后我们把只出现一次的数A加进去,看每一个二进制位i

  • i % 3 == 0:A的二进制形式在这一位是0
  • i % 3 == 1:A的二进制形式在这一位是1

因此我们可以根据A在每一位是0还是1,最终将A拼出来

代码

public int singleNumber(int[] nums) {
    int[] arr = new int[32];
    for (int num : nums) {
        for (int i = 0;i<32;i++) {
            // 提取num的第i位,加到arr[i]中
            arr[i] += (num >> i) & 1;
        }
    }

    int res = 0;
    for (int i = 0;i<32;i++) {
        // 根据第i位 % 3的结果是0还是1,将结果拼到res
        res |= (arr[i] % 3 == 0 ? 0 : 1) << i;
    }
    return res;
 }
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39383767/article/details/127797481

剑指offer答案python_剑指offer66道练习题汇总——python版(持续更新)-爱代码爱编程

1.二维数组的查找(数组) # -*- coding:utf-8 -*- class Solution: # array 二维列表 def Find(self, target, array): #将target与列表的左下角元素比较,若target大于左下角元素,列右移;小于行上移 if len(array)==0: return "false" col=

1024程序员节推荐书--《剑指Offer》专题突破版-爱代码爱编程

《剑指Offer》书评 众所周知,在互联网招聘中,总少不了笔试这一环节。而说到笔试,肯定有一本书会被每一个童鞋提及——那就是《剑指Offer》,在更新了两版后,终于在2021年的夏天这本书也更新了——《剑指Offer》专题突破版。 第一时间拿到这本书后已经开始慢慢阅读起来了。刚好去年也在校招前买了之前的版本,说一下我拿到这本第一感受就是何海涛大佬更

剑指offer2专项突击版——16不含重复字符的最长子字符串javascript题解-爱代码爱编程

双指针(或叫做长度改变的滑动窗口)+ 哈希表 根据左右指针的移动来找到最长子字符串 /** * @param {string} s * @return {number} */ var lengthOfLongestSubstring = function(s) { const lens=s.length; //若字符串为空字符串,

剑指 Offer II 022. 链表中环的入口节点(力扣剑指Offer专项突击版——链表2)-爱代码爱编程

题目 给定一个链表,返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数

剑指Offer Ⅱ 001. 整数除法(力扣剑指Offer专项突击版——整数_1)-爱代码爱编程

题目 给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 ‘*’、除号 ‘/’ 以及求余符号 ‘%’ 。 注意: 整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−2^

剑指Offer Ⅱ 003.二进制加法(力扣剑指Offer专项突击版——整数_3)-爱代码爱编程

题目 给定一个非负整数 n ,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组。 示例 1: 输入: n = 2 输出: [0,1,1] 解释: 0 --> 0 1 --> 1 2 --> 10 题解 题解一 本体最直观的想法是,求每个数的二进制位个数,如下:` int count_1(int n)

剑指Offer Ⅱ 004.只出现一次的数字 (力扣剑指Offer专项突击版——整数_4)-爱代码爱编程

题目: 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 示例 1: 输入:nums = [2,2,3,2] 输出:3 示例 2: 输入:nums = [0,1,0,1,0,1,100] 输出:100 题解: 题解1 哈希: 直观想法是哈希存储各数字出现次数,查找

【leetcode】剑指 offer(专项突击版)汇总_friedrichor的博客-爱代码爱编程

文章目录 002. 二进制加法(反转相加 / 位运算)006. 排序数组中两个数字之和(二分查找 / 双指针)007. 数组中和为 0 的三个数(双指针)008. 和大于等于 target 的最短子数组(滑动窗口 /

剑指offer专项突破版(1)—— 整数除法_亚洲第一中锋_哈达迪的博客-爱代码爱编程

整数除法 题目 剑指 Offer II 001. 整数除法 思路 由于只不能用除号,因此可以用a不断减b,直到a小于b为止,计算减了多少次b。但这样如果遇到 2 ^ 31 / 1 的情况,就会比较慢,因此需要进行

剑指offer专项突破版(3)—— 前 n 个数字二进制中 1 的个数_亚洲第一中锋_哈达迪的博客-爱代码爱编程

题目 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 思路 暴力法 对于1~n中的每个数组,我们可以单独计算其1的个数,然后将其加起来 怎么计算?每次用i &(i-1)将整数i的

剑指offer专项突破版(8)—— 和大于等于 target 的最短子数组_亚洲第一中锋_哈达迪的博客-爱代码爱编程

题目 剑指 Offer II 008. 和大于等于 target 的最短子数组 思路 本题使用双指针的思路 一个子数组可以用两个指针表示: left:指向子数组最左边的下标 right:指向子数组最右边的下

剑指offer专项突破版(10)—— 和为 k 的子数组_亚洲第一中锋_哈达迪的博客-爱代码爱编程

题目 剑指 Offer II 010. 和为 k 的子数组 思路 暴力法 本题求和为k的子数组的个数,一个直观的想法是: 枚举每个子数组 计算每个子数组的和 统计和等于k的子数组的个数 但这样时间复

剑指offer专项突破版(11)—— 0 和 1 个数相同的子数组_亚洲第一中锋_哈达迪的博客-爱代码爱编程

题目 剑指 Offer II 011. 0 和 1 个数相同的子数组 思路 我们可以将0看做-1,1还是看过1,这样一个0和1个数相同的子数组,其和就为0 等于是将题目转化为:求和为0的最长的子数组 可以在扫描数

剑指offer专项突破版(14)—— 字符串中的变位词_亚洲第一中锋_哈达迪的博客-爱代码爱编程

题目 剑指 Offer II 014. 字符串中的变位词 - 力扣(LeetCode) 思路 如果先计算出s1的全排列,再看每个排列是否是s2的子串,时间复杂度会非常高 如果两个字符串是变位词,不管是什么排列,其字