你是真的“C”——找单身狗~

简介: 初阶——找单身狗问题:在一组数组中,有一只“单身狗”(该数字只出现一次),其他的数字都有一个和自己相同的数字。其实解答此题有许多的方法,例如直接将数组进行一个排序,然后定义两个指针,然后寻找到单身狗。这里介绍的是用异或运算来解答这道题目,效率也比较高。

微信图片_20230427214238.gif

😎博客昵称:博客小梦

😊最喜欢的座右铭:全神贯注的上吧!!!

😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘微信图片_20230427160707.gif

前言🙌


   哈喽各位友友们😊,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享你是真的“C”——找单身狗~ 都是精华内容,可不要错过哟!!!😍😍😍


初阶——找单身狗问题:


在一组数组中,有一只“单身狗”(该数字只出现一次),其他的数字都有一个和自己相同的数字。


其实解答此题有许多的方法,例如直接将数组进行一个排序,然后定义两个指针,然后寻找到单身狗。这里介绍的是用异或运算来解答这道题目,效率也比较高


异或运算的规律:

  • 1.相同为零,相异为1;
  • 2.任何数和0异或等于其本身
  • 3.两个相同的数异或为0.


解题源码分享: 😘


#include <stdio.h>
int main()
{
  int single_dog[] = { 1,2,3,4,1,2,3,4,5 };
  int sz = sizeof(single_dog) / sizeof(int);
  int i = 0;
  int sin_dog = 0;
  for (i = 0; i < sz; i++)
  {
    sin_dog^= single_dog[i];
  }
  printf("%d", sin_dog);
  return 0;
}


程序输出结果验证: 😊


微信图片_20230428185427.png


进阶——找单身狗问题:


在一组数组中,有两只“单身狗”(有两个数字只出现一次),其他的数字都有一个和自己相同的数字。


  • 1.这道题明显比初阶找单身狗的问题难度明显上升,但是解法也很相似。
  • 2.那我们可不可以将这个问题转换成初阶单身狗问题呢?显然是可以的。这道题的核心就是进行一个分组,让两只单身狗分别在不同的组里面。这里举例说明一下两只单身狗为4和5。
  • 3.我们知道 4 的 二进制为:0100 。 5 的二进制为: 0101。可以发现 4 和 5 的最低二进制位上的数字不同。因此,这个可以作为分组的条件。
  • 4.然后依次对每一个组的数字进行一个异或,最终得到每一组的单身狗。


解题源码分享: 😘


#include <stdio.h>
int main()
{
  int single_dog[] = {1,2,3,4,1,2,3,5};
  int sz = sizeof(single_dog) / sizeof(int);
  int i = 0;
  int dog1 = 0;
  int dog2 = 0;
  for (i = 0; i < sz; i++)
  {
    //分组:
    // 4 : 0100  5: 0101 
    if ((single_dog[i] & 1) == 1)
    {
      dog1 ^= single_dog[i];
    }
    else if((single_dog[i] & 1) == 0)
    {
      dog2 ^= single_dog[i];
    }
  }
  printf("%d %d", dog1, dog2);
  return 0;
}


程序输出结果验证: 😊


微信图片_20230428185511.png


总结撒花💞


   本篇文章旨在分享你是真的“C”——找单身狗。希望大家通过阅读此文有所收获😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘

相关文章
|
机器学习/深度学习 人工智能 自然语言处理
【LangChain系列】第五篇:大语言模型中的提示词,模型及输出简介及实践
【5月更文挑战第19天】LangChain是一个Python库,简化了与大型语言模型(LLM)如GPT-3.5-turbo的交互。通过ChatOpenAI类,开发者可以创建确定性输出的应用。提示词是指导LLM执行任务的关键,ChatPromptTemplate允许创建可重用的提示模板。输出解析器如StructuredOutputParser将模型的响应转化为结构化数据,便于应用处理。LangChain提供可重用性、一致性、可扩展性,并有一系列预建功能。它使得利用LLM构建复杂、直观的应用变得更加容易。
636 0
|
10天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
9天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
417 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
|
3天前
|
存储 安全 前端开发
如何将加密和解密函数应用到实际项目中?
如何将加密和解密函数应用到实际项目中?
199 138
|
9天前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
381 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
|
3天前
|
存储 JSON 安全
加密和解密函数的具体实现代码
加密和解密函数的具体实现代码
199 136
|
21天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1356 8
|
8天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。