首页 > 编程语言 >【数据结构和算法实践-位运算-找出数组中出现K次的数,其他数出现M次】

【数据结构和算法实践-位运算-找出数组中出现K次的数,其他数出现M次】

时间:2024-09-06 20:54:19浏览次数:10  
标签:arr 遍历 进制 temp int 32 算法 数组 数据结构

位运算-找出数组中出现K次的数,其他数出现M次

题目

一个数组中,一个数出现了K次,另外其他的数出现了M次,找出出现K次的数

My Thought

 一、设置一个长度为32的int[] temp,把arr中的每个数都变成2进制,放入temp中
 1、设置长度为32的int数组
 2、遍历arr,将每个数都变成2进制,把每个数的2进制加入到temp中;即2进制位右移i位与1
 二、将得到的temp遍历,每个数%m,余数不为0的说明是出现了K次的数的2进制位
 1、遍历temp,每个数%m
 2、余数不为0的说明是出现了K次数的2进制位;即2进制位1左移j位

代码示例

JAVA-8

    public static int findKInArray(int[] arr, int k, int m) {
        int result = 0;
        int temp[] = new int[32];
        //设置一个长度为32的int[] temp,把arr中的每个数都变成2进制,放入temp中
        for (int a : arr) {
            for (int i = 0; i < 32; i++) {
                temp[i] += (a >> i) & 1;
            }
        }
        //将得到的temp遍历,每个数%m,余数不为0的说明是出现了K次的数的2进制位
        for (int j = 0; j < 32; j++) {
            if (temp[j] % m != 0) {
                result |= (1 << j);
            }
        }
        return result;
    }

标签:arr,遍历,进制,temp,int,32,算法,数组,数据结构
From: https://blog.csdn.net/Mao_c/article/details/141786657

相关文章

  • 数据结构-----栈 、队列
    1.数据结构中的栈和系统栈的区别        数据结构中的栈(Stack)与系统栈在本质上是相似的,都遵循“先进后出”(LastInFirstOut,LIFO)的原则,但它们在应用场景、实现方式和管理方式上存在显著的区别。1.1数据结构中的栈定义与特性:数据结构中的栈是一种特殊的线性表......
  • 数据结构与算法 第10天(图的应用)
    一、最小生成树生成树:所有顶点均由边连接在一起,但不存在回路一个图可以有多颗不同的生成树 生成树特点:生成树的顶点个数与图的顶点个数相同;生成树是图的极小连通子图,去掉一条边则非连通,一个有n个顶点的连通图的生成树有n-1条边;在生成树中再加一条边必然形成回路,......
  • 828华为云征文|华为云Flexus X实例部署安装HivisionIDPhoto一个轻量级的AI证件照制作算
    背景最近有一个开源项目非常火,就是HivisionIDPhotos一个轻量级的AI证件照制作算法github仓库https://github.com/Zeyi-Lin/HivisionIDPhotos由于最近华为云最近正在举办B2B企业节,FlexusX实例的促销力度非常大。所以购买了一个FlexusX实例。4核12G。准备安装一个,试一......
  • 数据结构 栈 队列
    系统栈:保护局部变量函数的形参和返回值函数的调用关系(保护现场,恢复现场操作,遵循先进后出,后进先出)数据结构栈(顺序栈,链式栈):同样遵遵循先进后出,后进先出原则只允许从一端进行数据的插入和删除的线性存储结构数据的插入--->入栈     数据的删除----->出栈顺序栈:......
  • 队列-数据结构
    一、队列FIFO特点:先进先出,后进后出允许从一段插入数据,另一端删除数据的线性存储结构队尾:插入数据入队队头:删除数据出队管道实质上也是一个队列。用途:缓存数据(主要是避免两者速度不匹配的,数据存取速度不匹配。)二、队列类型2.1、顺序队列顺序队列---------》假溢出--......
  • 识别并应对动态归纳类算法题:深入剖析与实战指南
    《识别并应对动态归纳类算法题:深入剖析与实战指南》在编程的世界里,算法题犹如一座座充满挑战的山峰,等待着开发者们去攀登。其中,动态归纳类算法题因其复杂性和灵活性,常常成为开发者们进阶路上的一道难关。本文将深入探讨如何识别并应对动态归纳类算法题,为大家提供一份全面的......
  • 72. 编辑距离算法实现详解
    LeetCode72.编辑距离详解一、题目描述给你两个单词word1和word2,请返回将word1转换成word2所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符。删除一个字符。替换一个字符。示例1:输入:word1="horse",word2="ros"输出:3解释:horse......
  • DFS算法专题(一)——二叉树中的深搜【回溯与剪枝的初步注入】
    目录1、DFS算法简介2、算法实战应用【leetcode】2.1计算布尔二叉树的值2.1.1算法原理 2.1.2算法代码2.2求根节点到叶节点数字之和  2.2.1算法原理​2.2.2算法代码2.3二叉树剪枝2.3.1算法原理2.3.2算法代码2.4验证二叉搜索树 2.4.1算法原理 2.4.2......
  • 人脸识别ArcFace 算法原理与实现
    在深度学习用于人脸识别方面,为了提高识别的准确率,研究者提出了ArcFace技术。ArcFace通过在Softmax损失函数上添加一种角度余弦距离的margin来提高人脸识别的准确率,ArcFace始终优于SOTA,且容易实现,计算开销可忽略不计。论文:ArcFace:AdditiveAngularMarginLossforD......
  • Numpy中生成数组的常用方法
    目录1.np.arrage()2.np.arange()3.ones/empty/zeros函数4.np.randomnp.random.rand():np.random.random():np.random.randn()np.random.randint(low,high,size,dtype)np.random.uniform(low,high,size)np.linspace1.np.arrage()importnumpyasnp##下面两种结果相同......