当前位置: 首页 > news >正文

C语言进阶习题【3】(5 枚举)——找单身狗2进阶版本

1. 题目描述

本小节是在之前版本上的一个进阶解决思路
之前版本解决代码链接

一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。
编写一个函数找出这两个只出现一次的数字。

2. 思路

使用异或操作符进行解题
在这里插入图片描述

3.代码实现

#include<stdio.h>
 编写一个函数找出这两个只出现一次的数字。
//
//分组:
//分组的要领,就是将2个单身狗必须放在2个组,同时每个组剩余的数字都是成对出现的

void findSingleDog(int arr[], int size, int singDog[])
{
    //异或 相同为0 相异为1
    //我们需要把所有数组都异或,相当于把两个单身狗异或,因为其他一样的结果是0, 1^1 001^001 = 000
    int i = 0;
    int ret = 0;
    for (i = 0; i < size; i++)
    {
        ret ^= arr[i];//这个结果就是 5 和6 异或 的结果 就是 110
    }
    //我们这个时候就要区分开5 和6 
    //101 
    //110
    // ——————异或
    // 110
    //我们可以通过最低位或者次低位来区分这两个数字
    
    //计算一下ret的哪一位二进制位是1
    int pos = 0;
    for (i = 0; i < 32; i++)//最多就是32位
    {
        if ((ret >> i) & 1 == 1)//说明最后一位是1
         //011>>1
        {
            pos = i;
            break;
        }
    }
    for (i = 0; i < size; i++)
    {
        if ((arr[i] >> pos) & 1 == 1)
        {
            singDog[0] ^= arr[i];
        }
        else
        {
            singDog[1]^= arr[i];
        }

    }
}
int main()
{
    int arr[] = { 1,2,3,4,5,1,2,3,4,6 };
    int size = sizeof(arr) / sizeof(arr[0]);
    int  singleDog[2] = { 0 };
    findSingleDog(arr, size,singleDog);
    printf("%d %d\n", singleDog[0], singleDog[1]);

    return 0;
}

在这里插入图片描述

相关文章:

  • 【前沿探索篇七】【DeepSeek自动驾驶:端到端决策网络】
  • AWS Bedrock平台引入DeepSeek-R1 模型,推动深度学习
  • 网站搭建wp
  • unity学习51:所有UI的父物体:canvas画布
  • AI大模型趣味实战专栏 预告篇
  • 文件上传-黑名单关键字绕过
  • 用C/C++绘制跳动的爱心:从数学方程到动画实现
  • 数据安全_笔记系列02:国密算法(商用密码算法)详解
  • JavaScript querySelector()、querySelectorAll() CSS选择器解析(DOM元素选择)
  • MySQL数据库——常见慢查询优化方式
  • 基于STM32单片机设计的宠物喂食监控系统
  • Zap:Go 的高性能日志库
  • Linux故障排查和性能优化面试题及参考答案
  • 计算机毕业设计SpringBoot+Vue.js古典舞在线交流平台(源码+文档+PPT+讲解)
  • DeepSeek-R1-Zero:基于基础模型的强化学习
  • 【备赛】点亮LED
  • P8615 [蓝桥杯 2014 国 C] 拼接平方数
  • 从零到一学习c++(基础篇--筑基期十一-类)
  • 电脑经常绿屏(蓝屏)怎么办(解决方法)?
  • Golang概述
  • 上海银行副行长汪明履新上海农商银行党委副书记
  • 减负举措如何助力基层干部轻装上阵?记者一线调查
  • 取得金奖西瓜品种独家使用权的上海金山,为何要到异地“试种”?
  • 大学2025丨专访西湖大学副校长邓力:如何才能培养“不惧未知”的创新者
  • 玉林一河段出现十年最大洪水,一村民被冲走遇难
  • 上海这个咖啡文化节首次“走出去”,率本土品牌亮相英国伦敦