首页 > 其他分享 >【剑指 Offer】 56 - II. 数组中数字出现的次数 II

【剑指 Offer】 56 - II. 数组中数字出现的次数 II

时间:2023-04-13 09:38:17浏览次数:30  
标签:数字 nums int Offer 56 II 数组 32

【题目】

在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。


示例 1:

输入:nums = [3,4,3,3]
输出:4

示例 2:

输入:nums = [9,1,7,9,7,9,7]
输出:1

 

限制:

    1 <= nums.length <= 10000
    1 <= nums[i] < 2^31

 

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-ii-lcof

 

【思路】

用32位数组表示各数字二进制为1的个数,然后累加对3求余,得到目标数的二进制表示,然后通过左移按位异或的方式转换成10进制

 

【代码】

class Solution {
    public int singleNumber(int[] nums) {
        // 用32位数组表示各数字二进制为1的个数
        // 累加后对3取余,得到只出现一次的数字的二进制位
        // 然后把数组中存储的数还原成10进制返回
        int[] count = new int[32];
        for(int num:nums){
            int i =0;
            while(num!=0){
                count[i] +=num%2;
                num/=2;
                i++;
            }
        }
        int res = 0;
        for(int i = 0; i < 32; i++) {
            res <<= 1; // 左移 1 位
            int cur = count[31 - i]%3;
            res |= cur; // 恢复第 i 位的值到 res 实际上是加法运算 如果这位是一就记录然后左移
        }
        return res;
    }
}

 

标签:数字,nums,int,Offer,56,II,数组,32
From: https://www.cnblogs.com/End1ess/p/17312196.html

相关文章

  • 链表应用 II
    目录链表应用II应用2:Leetcode.25题目分析代码实现链表应用II应用2:Leetcode.25题目25.K个一组翻转链表输入:\(head=[1,2,3,4,5]\),\(k=2\)输出:\([2,1,4,3,5]\)分析这里,我们以前面题目中的用例,来说明算法的步骤。为了避免讨论边界条件,这里,我们使用一个\(dummy\)......
  • 【LeeCode】213. 打家劫舍 II
    【题目描述】你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房......
  • 力扣---剑指 Offer 39. 数组中出现次数超过一半的数字
    数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:[1,2,3,2,2,2,5,4,2]输出:2 限制:1<=数组长度<=50000注意:本题与主站169题相同:https://leetcode-cn.com/problems/majority-el......
  • .net 6 MVC项目发布iis 没有views
    解决方案1.安装Nuget包:Install-PackageMicrosoft.AspNetCore.Mvc.Razor.RuntimeCompilation2.在Program.cs中的AddControllersWithViews()之后添加对AddRazorRuntimeCompilation()的调用。也就是builder.Services.AddControllersWithViews().AddRazorRuntimeCompilation();......
  • 【图论之拓扑排序】剑指 Offer II 114. 外星文字典
    剑指OfferII114.外星文字典讲解传送门constintN=26,M=N*N;classSolution{public:inth[N],e[M],ne[M],idx=0;boolst[N];intin[N],cnt=0;//上面三行要写在classSolution内部,不然每次调用不会清空voidadd(inta,intb){......
  • 解析566回调函数
    1.这是一个结构体,ConfigCallBack,是结构体别名,*pConfigCallBack是结构体指针  里面是两个函数指针,一个是GetConfigCB,一个是SetConfigCB.很明显是获取和设置配置的函数指针。2.实现    3.定义在类里面,然后类成员函数调用即可,用结构体别名定义 ......
  • 哈希表:剑指 Offer 48. 最长不含重复字符的子字符串
    题目描述:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。   提示:s.length<=40000 思路:双指针(滑动窗口)+哈希表:   复杂度分析:时间复杂度O(N):其中N为字符串长度,动态规划需遍历计算dp列表。空间复杂度O(1......
  • UVa 568 Just the Facts (数论&打表&不打表)
    568-JusttheFactsTimelimit:3.000secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=100&page=show_problem&problem=509Theexpression N!,readas``N factorial,"denotestheproductofthefirst N......
  • 【剑指 Offer】 65. 不用加减乘除做加法
    【题目】写一个函数,求两个整数之和,要求在函数体内不得使用“+”、“-”、“*”、“/”四则运算符号。 示例:输入:a=1,b=1输出:2 提示:   a,b均可能是负数或0   结果不会溢出32位整数来源:力扣(LeetCode)链接:https://leetcode.cn/problems/bu-yong-jia-jian-c......
  • 哈希表:剑指 Offer 03. 数组中重复的数字
    题目描述:找出数组中重复的数字。在一个长度为n的数组nums里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。   限制:2<=n<=100000 哈希表/Set利用数据......