作业:单身狗1

思路:

一:题目一开始就规定了这个数组的标准——只有一个数字出现一次,其他数字都是成对出现的,因此,重点就是如何排除成对的数,和保留单独的数

二:^的特点:相同为0,不同为1,与本题“成对为相同”和“单独为不同”类似。

三:a^a=0,0^a=a这两个公式是按位异或^的重要公式,于是我们可以让数组的数每一个都按位异或,最后成对的都变为0,只剩下一堆0和单独的数,0^单独的数=单独的数,就能找到答案了。

例如题目中的数组:1 2 3 4 5 1 2 3 4   ==>   1^2^3^4^5^1^2^3^4  ==> 

       (1^1)^(2^2)^(3^3)^(4^4)^5  ==>     0^0^0^0^5     ==>    0^5=5 

答案:

#include<stdio.h>
int one(int* arr, int sz)   //定义一个返回值位只有一个数的函数
{int ret = 0, i = 0;for (i = 0; i < sz; i++)    //从数组第一个到最后一个{ret = ret ^ *(arr + i);   //一直按位异或,最后得到的数便是只有一个的数(因为a^a=0,0^a=a,所以成对的数都会变为0,最后0就会和只有一个的数^上,就是答案)}return ret;  //返回只有一个的值
}
int main()
{int arr[9] = { 1,2,3,4,5,1,2,3,4 };int sz = sizeof(arr) / sizeof(arr[0]);   //sz代表数组中元素的个数int ret = one(arr, sz);    printf("只有一个的数字是:%d\n", ret);return 0;
}

另:数组名arr除了在sizeof(arr)和&arr中arr表示整个数组,其余都表示数组的首元素地址,所以函数传参时,要用接受地址的指针变量,即int*arr

arr为整型数组的首元素地址,所以它的大小为一个整型,即4个字节,因此arr+1也就是数组中下一个元素的地址。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/457384.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

『 C++ - STL 』unordered_xxx系列关联式容器及其封装(万字)

文章目录 &#x1f3a1; unordered系列关联式容器&#x1f3a1; 哈希表的改造&#x1f3a2; 节点的设置与总体框架&#x1f3a2; 迭代器的封装&#x1f3a0; 迭代器的框架&#x1f3a0; operator()运算符重载&#x1f3a0; 其余成员函数/运算符重载 &#x1f3a2; 迭代器begin(…

SpringBoot 事务管理Transactional 数据回滚 数据一致性

介绍 SpringBoot当中的事物他保证了一致性&#xff0c;要么全部一起成功&#xff08;提交&#xff09;&#xff0c;要么一起失败&#xff0c;失败&#xff08;回滚&#xff09;后数据会回到当初的样子&#xff0c;是一组操作的集合。 事物类型 开启事物提交事物回滚事物 案…

小红的字符串中值

题目描述: 小红定义一个长度为奇数的字符串的“中值”为中间那个字符。例如"kou"的中值是o。 现在小红拿到了一个字符串&#xff0c;她想知道某个字符是多少个子串的中值。你能帮帮她吗&#xff1f; 输入描述: 输出描述: 一个整数&#xff0c;代表中值为chr的连续子串…

程序员的数字化工作台:理解不关机背后的逻辑与需求

目录 程序员为什么不喜欢关电脑&#xff1f; 电脑对程序员的重要性&#xff1a; 工作流程与需求&#xff1a; 数据安全与备份&#xff1a; 即时性与响应&#xff1a; 个人习惯等方面&#xff1a; 程序员为什么不喜欢关电脑&#xff1f; 电脑对程序员的重要性&#xff1a;…

Xampp中Xdebug的安装使用

工欲善其事&#xff0c;必先利其器 XDebug简介 XDebug 是一个用于 PHP 的调试和性能分析工具。它提供了一系列功能&#xff0c;帮助开发者在开发和调试 PHP 应用程序时更加高效。 以下是 XDebug 的一些主要特性和功能&#xff1a; 调试功能&#xff1a; 断点调试&#xff1a;…

【C++】实现一个二叉搜索树

目录 二叉搜索树的概念 1.结点定义 2.构造、析构、拷贝构造、赋值重载 3.插入、删除、查找、排序 3.1插入 3.2插入递归版 3.3查找指定值 3.3查找指定值递归版 3.4中序遍历 3.5删除 最后 二叉搜索树的概念 二叉搜索树又称为二叉排序树或二叉查找树&#xff0c;它或者…

JVM垃圾回收机制及调优工具Arthas的使用

文章目录 1、JVM垃圾回收机制1.1 针对的内存区域1.2 怎么判断对象是否可以被回收&#xff1f;1.3 垃圾收集算法1.3.1 **标记-清除&#xff08;Mark-Sweep&#xff09;**1.3.2 复制&#xff08;Copying&#xff09;1.3.3 标记-整理&#xff08;Mark-Compact&#xff09;1.3.4 分…

百面嵌入式专栏(面试题)驱动开发面试题汇总1.0

沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将介绍驱动开发面试题 。 1、Linux驱动程序的功能是什么? 对设备初始化和释放。进行内核与硬件的数据交互。检测和处理设备出现的错误。2、内核程序中申请内存使用什么函数? 答案:kmalloc()、kzalloc()、vm…

亚信安慧AntDB领航分布式数据库的突破之路

随着互联网技术的迅猛发展&#xff0c;大数据时代的到来&#xff0c;数据库的需求不断增长。在这样的背景下&#xff0c;国产分布式数据库正逐渐崭露头角&#xff0c;AntDB作为其中的重要代表&#xff0c;也积极参与到了这场竞争中。作为国内的技术创新者&#xff0c;AntDB不仅…

通过 docker-compose 部署 Flink

概要 通过 docker-compose 以 Session Mode 部署 flink 前置依赖 Docker、docker-composeflink 客户端docker-compose.yml version: "2.2" services:jobmanager:image: flink:1.17.2ports:- "8081:8081"command: jobmanagervolumes:- ${PWD}/checkpoin…

modelsim仿真使用到vivado的IP,该如何使用!

modelsim仿真时&#xff0c;如果使用到了vivado的IP就会报错&#xff0c;本次就告诉大家如何将vivado的IP添加到modelsim中直接仿真。 一、生成ini文件以及IP打包 打开vivado&#xff0c;点击上方的Tools-->Compile Simulation Libraries得到如下界面 simulator&#xff1…

【Flink入门修炼】1-2 Mac 搭建 Flink 源码阅读环境

在后面学习 Flink 相关知识时&#xff0c;会深入源码探究其实现机制。因此&#xff0c;需要现在本地配置好源码阅读环境。 本文搭建环境&#xff1a; Mac M1&#xff08;Apple Silicon&#xff09;Java 8IDEAFlink 官方源码 一、 下载 Flink 源码 github 地址&#xff1a;h…