c语言力扣题目:消失的数字(有关时间复杂度O(N²)O(N))以及对异或操作符的更深入的理解(如何用人脑的十进制去考量二进制)

目录

Way One :暴力求解,时间复杂度为 O(N²)

代码1

Way Two : 时间复杂度限制到 O(N²)

代码及其详解


如题

Way One :暴力求解,时间复杂度为 O(N²)

大体思路:比如这里我们需要处理的整型数组是"3,0,1",我们可以用冒泡排序或者 qsort函数将他从大到小进行排序成"0,1,3"然后生成一个数组"0,1,2"

代码1

过于简单:不多进行赘述

int cmp(const void*p1, const void* p2)
{return *(int*)p1 - *(int*)p2;
}int disapperance(int* arr, int sz)
{int i = 0;int j = 0;int tarr[] = { 0 };for (j = 0; j <sz; j++){while (1){if (arr[i] == j){i++;j++;}else{printf("%d ", j);}break;}}
}
int main()
{int arr[3] = { 3,0,1 };int sz = sizeof(arr) / sizeof(arr[0]);qsort(arr, sz, sizeof(arr[0]), cmp);int i = 0;disapperance(arr, sz);return 0;
}

运行结果

目录

Way Two : 时间复杂度限制到 O(N²)

个人感觉这个时间复杂度O(N)的题目思路有点类似于"单生狗" 
思路是这样的:首先我们得明确知道的前提条件就是异或运算符是有交换律的,比如"1^1^4^4=0",但是也可以说"1^4^1^4==0"
这一题给我们一个数组"0,3,1",找出缺少的数字2
观察法可知,题目的意思是让我们和有限有序数组数组"0,1,2,3"进行对比,找出数字"2",这个时候就得想办法让两个数组进行异或:"0^1^3^0^1^2^3=2"了

这个题目大体思路就是使用题目给的那个乱序的数字数组和我们创造的有序数组进行异或

代码及其详解

int disnum(int* arr, int sz)
{
    int x = 0;
     
    for (int i = 0; i < 3; i++)
    {
        x = x ^ arr[i]; //好像要将一个字符串先赋值给"x"然后再和我们自己创造的有序数组进行异或找出缺失的数字,
        //计算机对数字进行异或运算都是基于数字的补码然后使用"相同为零,相异为一"进行计算的,
        //然后基于此理论,在十进制里面"相同的数字异或为'0',0异或任何数字都等于这个任意数的本身

        // 
        //在进行大量的计算与观察后,我们得出了一条<结论>,使我们的思维可以更好地适应计算机的二进制计算

        // 
        //也就是说有关异或 计算机在进行异或计算的时候确实会每一个阶段都得到一个值然后带入下一步 
        //但是我们大脑不是二进制,是十进制的
        //所以我们人脑去考量的话就是不到有关异或计算的最后一步都不可以把这个数值表达式算到只剩一个数
        //就像上面一个for循环计算机确实得到了一个数 但是我们大脑中只能是0^1^3这么一个数值表达式

        然后我们这里即想要将arr[i]放入一个变量又不想改变它本身,因为0异或任何数字就等于这个数本身,所以是设置int x=0;
    }
    int j = 0;
    for (int i = 0; i <= 3; i++)
    {
        x=x^i;//然后将上面的for循环生成的那一串长数字按着这个循环与i不停的递归,相同为0,相异为1,最后是只有2了
    }
    return x;
}
int main()
{
    int arr[10] = { 0,1,3 };
    int sz = sizeof(arr) / sizeof(arr[0]);
    int ret = disnum(arr, sz);
    printf("%d", ret);
    return 0;
}

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

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

相关文章

【数组Array】力扣-1094 拼车

目录 题目描述 解题过程 题目描述 车上最初有 capacity 个空座位。车 只能 向一个方向行驶&#xff08;也就是说&#xff0c;不允许掉头或改变方向&#xff09; 给定整数 capacity 和一个数组 trips , trip[i] [numPassengersi, fromi, toi] 表示第 i 次旅行有 numPassen…

理解pom.xml中的parent标签

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 循序渐进学SpringBoot ✨特色专栏&…

06:2440----异常与中断

目录 一:概念的引入 1:ARM系统 2:CPU处理中断的过程 3:ARM对异常&#xff08;中断&#xff09;处理的过程 4:软/硬件工作分配 二:CPU模式状态与寄存器 1:ARM CPU的七种工作模式 2:state 3:寄存器 A:寄存器情况 B:CPSR C:状态位和保留位 D:协同工作 E:异常向量表 …

Text2SQL学习整理(四)将预训练语言模型引入WikiSQL任务

导语 上篇博客&#xff1a;Text2SQL学习整理&#xff08;三&#xff09;&#xff1a;SQLNet与TypeSQL模型简要介绍了WikiSQL数据集提出后两个早期的baseline&#xff0c;那时候像BERT之类的预训练语言模型还未在各种NLP任务中广泛应用&#xff0c;因而作者基本都是使用Bi-LSTM…

广东建筑模板价格一览表

在建筑行业&#xff0c;合适的建筑模板是确保工程顺利进行的关键材料之一。在选择建筑模板时&#xff0c;除了质量、材质等因素外&#xff0c;价格也是一个重要的考虑因素。本文将提供一个广东建筑模板的价格一览表&#xff0c;以供业内人士参考。需要注意的是&#xff0c;以下…

SpringSecurity入门

前言 Spring Security是一个用于在Java应用程序中提供身份验证和授权功能的强大框架。它构建在Spring框架之上&#xff0c;为开发人员提供了一套灵活且全面的安全性服务&#xff0c;本篇将为大家带来Spring Security的详细介绍及入门 一.安全框架 在学习了解Spring Security之…

【qt信号槽-5】信号槽相关注意事项记录

背景&#xff1a; 信号槽是qt很重要的概念&#xff0c;遇到问题帮助没少看。其中就有signals and slots这一章节&#xff0c;说得很到位。 概念琐碎&#xff0c;记录备忘。不对之处望指正。 【qt信号槽-1】槽函数重写问题&#xff0c;qt_metacall和qt_static_metacall-CSDN博…

【数据结构】并查集的简单实现,合并,查找(C++)

文章目录 前言举例&#xff1a; 一、1.构造函数2.查找元素属于哪个集合FindRoot3.将两个集合归并成一个集合Union4.查找集合数量SetCount 二、源码 前言 需要将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个单元素集合&#xff0c;然后按一定的规…

交叉验证之KFold和StratifiedKFold的使用(附案例实战)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

文件操作学习总结

磁盘上的⽂件是⽂件。 但是在程序设计中&#xff0c;我们⼀般谈的⽂件有两种&#xff1a; 程序⽂件、数据⽂件 &#xff08;从⽂件功能的⻆度来分类 的&#xff09;。 程序⽂件 &#xff1a; 程序⽂件包括源 程序⽂件&#xff08;后缀为.c&#xff09; , ⽬标⽂件&#xff0…

Opencv入门四(宽高为原始图像的一半)

代码如下&#xff1a; #include <opencv2/opencv.hpp> int main(int argc, char** argv) { cv::Mat img1, img2; cv::namedWindow("Example1", cv::WINDOW_AUTOSIZE); cv::namedWindow("Example2", cv::WINDOW_AUTOSIZE); img1 cv…

Mac如何搭建本地服务器

苹果电脑Mac OS X系统自带了Apache服务器 打开终端 //开启apache&#xff1a;sudo apachectl start //重启apache&#xff1a;sudo apachectl restart //关闭apache&#xff1a;sudo apachectl stop在浏览器输入127.0.10.1 &#xff0c; 如果页面出现 it works&#xff0c;则…