C语言每日一题:4.消失的数字+数字在升序数组中出现的次数+整数转换

请添加图片描述
消失的数字:

思路1:排序+遍历
1.使用qsort排序数组判断当前数值+1是否是数组下一个元素的数值。
2.如果是一直循环注意数组越界,如果不是那么当前的数组的数值+1就是消失的数。
3.存在0——n的数字是第n个数没有了。循环过程中从头到尾也找不到这个数字。
4.因为在循环过程中数组下标只会从0到n-1.前面排序之后都满足循环要求。
5.在循环判断之前判断一下num[n-1]+1是否等于n;如果等于说明是最大的数值消失直接返回。
6.如果不是进入循环找这个数值。

int cmp(void* a, void* b)
{return (*((int*)a) - *((int*)b));
}int missingNumber(int* nums, int numsSize)
{//排序+遍历的方法qsort(nums, numsSize, sizeof(nums[0]), cmp);int i = 0;int ret = 0;int flag = -1;if ((nums[numsSize - 1] + 1) == numsSize){flag = 0;}//都不是最大数值失去的情况。else{//注意数组越界while (i < numsSize - 1){if ((nums[i] + 1 == nums[i + 1]) && (nums[0] == 0)){i++;}//第一位不是0说明0消失了else if (nums[0] != 0){ret = 0;break;}else{ret = nums[i] + 1;break;}}}if (flag == 0){return numsSize;}return ret;

思路二:使用计算的方法
1.定义sum1和sum2分别作为0到n所有数值的和,和0到n除了消失数字的和。
2.计算sum1直接使用等差数列求和,((0+numsize)*(numsize+1))/2
3.计算sum2直接遍历求和。(防止数组越界)。加numsize次。


int missingNumber(int* nums, int numsSize)
{//计算数值差的方法int sum1=0;int sum2=0;sum2=((0+numsSize)*(numsSize+1))/2;for(int i=0;i<numsSize;i++){sum1+=nums[i];}return sum2-sum1;
}

思路三:按位与的思路
1.定义一个x,先与数组中的每一个内容按位与。
2.然后x再与,0到n的所有数值进行按位与。
3.按位与满足交换律(相同的数消除)
比如:0,1,2,3,4,5
: 0,1,2,3,4,5,6
按位与之后结果是6.

int missingNumber(int* nums, int numsSize)
{int x=0;for(int i=0;i<numsSize;i++){x^=nums[i];}for(int i=0;i<=numsSize;i++){x^=i;}return x;

请添加图片描述

数字在升序数组中出现的次数

数字在升序数组中出现的次数
思路1:
1.这个K只出现一次,或者出现多次。
2.这个K没有出现过。
3.二分查找的思路。
4.当查找结束,判断arr[mid]==k吗?,不等于说明这个k不存在于这个数组里面我们直接返回0;
5.找到了这个K数的位置我们mid下标向右移动直到下一个不是停止到k的位置停止,左边同理。
6.同时记录K的数值。

int GetNumberOfK(int* nums, int numsLen, int k)
{// write code hereif (numsLen == 0){return 0;}//出现一次(mid这个位置确实是出现了一次)and没有出现int left = 0;int right = numsLen - 1;int mid = 0;while (left <= right){mid = (left + right) / 2;if (nums[mid] < k){left = mid + 1;}else if (nums[mid] > k){right = mid - 1;}else{break;}}//这个数值不存在if (nums[mid] != k){return 0;}//只有一个数,这一个就是要的int count = 1;if (nums[mid] == k && numsLen == 1){return 1;}else if(nums[mid] == k && numsLen != 1){int left=mid;int right=mid;while (nums[right + 1] == k){right++;count++;}while (nums[left - 1] == k){left--;count++;}     }return count;
}

请添加图片描述

整数转换

思路1:
1.注意A,B的范围。在二进制位上31个是数值位,一位是符号位。
2.我们可以通过按位异或的方式拿出不同位数的情况。
3.变成了记录按位异或结果中1的数值个数。
4.b=1<<i 判断异或结果&b是否==b相等就说明对应异或结果处的值为1.
5.A,B 。有三种情况:
1.A,B中有一个为负数,所以需要加上符号位的1.
2.A,B同正或者同负,直接返回统计的结果。

int convertInteger(int A, int B){//两个数值进行按位异或int C=A^B;//进行记录int count=0;int b=0;if(((A<0)||(B<0))){count+=1;}for(int i=0;i<31;i++){b=(1<<i);if((b&C)==b){count++;}}if((A<0)&&(B<0))count--;return count;}

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

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

相关文章

Zabbix监控之分布式部署

文章目录 Zabbix监控之分布式部署zabbix proxy概述部署zabbix-proxy节点规划基础环境准备安装proxy以及数据库配置数据库添加服务端host解析修改zabbix-proxy配置文件启动代理服务器 zabbix页面(1)在zabbix页面添加代理(2)zabbix-agent连接proxy Zabbix监控之分布式部署 zabbi…

【LeetCode】101.对称二叉树

题目 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false提示&#xff1a; 树中节点数…

几个影响 cpu cache 性能因素及 cache 测试工具介绍

》内核新视界文章汇总《 文章目录 1 cache 性能及影响因素1.1 内存访问和性能比较1.2 cache line 对性能的影响1.3 L1 和 L2 缓存大小1.4 指令集并行性对 cache 性能的影响1.5 缓存关联性对 cache 的影响1.6 错误的 cacheline 共享 (缓存一致性)1.7 硬件设计 2 cpu cache benc…

让企业出海支付流程更加安全,亚马逊云科技推出支付加密服务

在咖啡店买一杯咖啡&#xff0c;在电商平台下单一件商品&#xff0c;其消费流程背后&#xff0c;都要涉及到金融支付的多个环节&#xff0c;而其中对金融数据存储和流通的加密则是保障金融安全的重要环节。 加密是保障消费者支付流程安全的最大挑战。亚马逊云科技首席安全布道…

数仓学习---15、数据仓库工作流调度

1、数据仓库工作流调度 1.1 调度工具部署 工具部署链接 1.2 新数据生成 1.2.1 用户行为日志 1、启动日志采集通道&#xff0c;包括Kafka、Flume等 &#xff08;1&#xff09;启动Zookeeper zk.sh start&#xff08;2&#xff09;启动Kafka kf.sh start&#xff08;3&…

【ROS第一讲】一、创建工作空间

【ROS第一讲】一、创建工作空间 一、工作空间1.src&#xff1a;2.build&#xff1a;3.devel&#xff1a;4.install: 二、创建工作空间1.工作空间的编译2.配置环境变量&#xff1a; 三、创建功能包 一、工作空间 1.src&#xff1a; 放置所有功能包源码的空间 2.build&#xf…

【语音识别】- 声学,词汇和语言模型

一、说明 语音识别是指计算机通过处理人类语言的音频信号&#xff0c;将其转换为可理解的文本形式的技术。也就是说&#xff0c;它可以将人类的口语语音转换为文本&#xff0c;以便计算机能够进一步处理和理解。它是自然语言处理技术的一部分&#xff0c;被广泛应用于语音识别助…

项目播报 | 新基德携手璞华易研PLM,打造企业新一代研发管理平台

近日&#xff0c;“新基德PLM&#xff08;Product Lifecycle Management&#xff0c;产品生命周期管理&#xff09;项目”在新基德&#xff08;深圳&#xff09;电子有限公司&#xff08;以下简称&#xff1a;新基德&#xff09;正式启动。新基德是一家集手机研发、生产、销售、…

基于深度学习的高精度六类海船检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度六类海船检测识别系统可用于日常生活中检测与定位海船目标&#xff08;散装货船&#xff08;bulk cargo carrier&#xff09;、集装箱船&#xff08;container ship&#xff09;、渔船&#xff08;fishing boat&#xff09;、普通货船&…

【Docker】Docker Compose的配置与部署

文章目录 一、Docker Compose1. Docker Compose 的概述2. Docker Compose 三大的概念3. Docker Compose 环境安装二、YAML 文件格式及编写注意事项1. YAML 文件格式2. YAML 格式的注意事项3. YAML 数据结构3.1 基本类型3.2 实例3.3 YAML 特殊类型文本块锚点与引用三、Docker Co…

JAVA面试总结-Redis篇章(四)——双写一致性

JAVA面试总结-Redis篇章&#xff08;四&#xff09;——双写一致性 问&#xff1a;redis 做为缓存&#xff0c;mysql的数据如何与redis进行同步呢&#xff1f;第一种情况&#xff0c;如果你的项目一致性要求高的话 采用以下逻辑我们应该先删除缓存&#xff0c;再修改数据库&…

栈粉碎原理分析

栈粉碎原理分析 源代码如下 #include <stdio.h>void function(int a, int b) {char buffer[12];gets(buffer);//long* ret (long *) ((long)buffer28);//*ret *ret 7;return; }void main() {int x;x 0;function(1,2);x 1;printf("%d\n",x); } 由解注释前…

qt服务器 网络聊天室

widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//给服务器指针实例化空间server new QTcpServer(this); }Widget::~Widget() {delete ui; }//启动…

暴力猴插件简明开发教程->百度首页默认设置为我的关注

文章目录 暴力猴插件开发简明教程->百度首页默认设置为我的关注缘起缘灭思路实现尾声 暴力猴插件开发简明教程->百度首页默认设置为我的关注 缘起 在我的百度首页有很多自己设置的导航链接(接近100个),里面放了我常用的网站, 如下图 但是最近一段时间, 我发现百度做了一…

智能合约安全审计

智能合约安全审计的意义 智能合约审计用于整个 DeFi 生态系统&#xff0c;通过对协议代码的深入审查&#xff0c;可以帮助解决识别错误、低效代码以及这些问题。智能合约具有不可篡改的特点&#xff0c;这使得审计成为任何区块链项目安全流程的关键部分。 代码审计对任何应用…

【牛客面试必刷TOP101】Day1.反转链表和合并两个排序的链表

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;牛客面试必刷TOP101 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&…

详细分析Python中运算符“==“和“is“的区别

目录 Python中运算符"" Python中运算符"is" ""和"is"的区别 总结 Python中运算符"" 在Python中&#xff0c;双等号运算符"" 用于比较两个值是否相等。它返回一个布尔值&#xff0c;即True或False&#xff0c;…

C# 使用opencv从图片识别人脸示例

1.用chatgpt帮我写了一个示例 using System; using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Structure;class Program {static void Main(string[] args){// 加载人脸分类器CascadeClassifier faceCascade new CascadeClassifier("haarcascade_frontalface_defau…

JenKins工作流程

程序员提交代码到Git/SVN仓库&#xff0c;触发钩子程序向 JenKins 进行通知&#xff0c;Jenkins 调用Git/SVN插件获取源码&#xff0c;调用Maven打包为war包&#xff0c;调用Deploy to web container插件部署到Tomcat服务器。

Redis哨兵模式

Redis哨兵模式 一、服务器准备二、安装redis1.Master服务器2.SlaveFirst服务器3.SlaveSecond服务器 三、依次开启Redis服务器四、开启哨兵1.修改Master哨兵配置文件2.修改SlaveFirst哨兵配置文件3.修改SlaveSecond哨兵配置文件4.开启哨兵5.验证是否开启成功6.主从配置如下五、挂…