剑指offer--数组中重复的数字

在这里插入图片描述

一.题目描述

在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。

在这里插入图片描述
算法1.排序,然后遍历,时间复杂度O(nlogn),空间O(logn)

int Cmp_int(const void* vp1, const void* vp2)
{return *(int*)vp1 - *(int*)vp2;
}
int findRepeatNumber1(int* nums, int numsSize)
{qsort(nums,numsSize,sizeof(int),Cmp_int);//调用排序算法,需要引用stdlib.hfor (int i = 0; i+1 < numsSize; i++){if (nums[i] == nums[i + 1])return nums[i];}return -1;
}

算法2:利用哈希表,时间O(n),空间O(n)

int findRepeatNumber(int* nums, int numsSize)
{int* arr = (int*)malloc(numsSize * sizeof(int));int i;int m;for (i = 0; i < numsSize; i++)arr[i] = -1;//-1表示无效值for (i = 0; i < numsSize; i++){m = nums[i];if (arr[m] != -1)//找到了{free(arr);return m;}arr[m] = m;}free(arr);return -1;//没有重复的
}

算法3.数据归位(把m存放到nums[m]位置)

int findRepeatNumber3(int* nums, int numsSize) //O(n),O(1){int m; for (int i = 0; i < numsSize; i++) {while (nums[i] != i)//当前位置,存放的不是当前数据,交换 {m = nums[i]; if (m == nums[m])//找到了 return m; nums[i] = nums[m]; nums[m] = m; }}return -1; 
}int main() 
{int nums[] = { 2, 3, 1, 0, 2, 5, 3 }; printf("%d\n", findRepeatNumber(nums,sizeof(nums)/sizeof(nums[0])));return  0; 
}

本篇完!

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

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

相关文章

私域流量黄金时代:SCRM赋能企业深度运营

随着互联网的不断发展&#xff0c;私域流量已成为企业运营中不可或缺的一部分。私域流量不仅代表着企业的忠实用户群体&#xff0c;更是企业进行精细化运营、提升品牌价值的重要阵地。在这样的背景下&#xff0c;社会化客户关系管理&#xff08;SCRM&#xff09;应运而生&#…

SpringBoot + Redis 实现接口限流,一个注解的事

Redis 除了做缓存,还能干很多很多事情:分布式锁、限流、处理请求接口幂等性。。。太多太多了~今天想和小伙伴们聊聊用 Redis 处理接口限流。 1. 准备工作 首先我们创建一个 Spring Boot 工程,引入 Web 和 Redis 依赖,同时考虑到接口限流一般是通过注解来标记,而注解是通…

【力扣一刷】代码随想录day28(93.复原IP地址、78.子集、90.子集II )

目录 【93.复原IP地址】中等题&#xff08;偏难&#xff0c;坑很多&#xff09; 【78.子集】中等题&#xff08;偏简单&#xff09; 【90.子集II】中等题 【93.复原IP地址】中等题&#xff08;偏难&#xff0c;坑很多&#xff09; 思路&#xff1a;以101023为例子 1、将题目…

输出100~200之间的素数(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//实现素数判断函数&#xff1b; int Prime(int number) {//初始化变量值&#xff1b;int divided 2;int JudgementCondition 0;//循环判断素数&#xff1b;wh…

(C)1007 素数对猜想

1007 素数对猜想 问题描述 输入样例&#xff1a; 20 输出样例&#xff1a; 4 解决方案&#xff1a; #include<stdio.h> #include<string.h> #include<math.h> int main(){int n,d;int a[100000];int flag,jishu0;scanf("%d",&n);memset(a,-1,…

基于51单片机甲醛浓度检测设计

基于51单片机甲醛浓度检测设计 &#xff08;仿真&#xff0b;程序&#xff0b;原理图&#xff0b;PCB&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.甲醛浓度数据经过单片机处理&#xff0c;由LCD1602实时显示。 2.可通过按键设置甲醛报警阈值&#xff…

RK3568驱动指南|第十四篇 单总线-第158章DS18B20编写字符设备驱动框架

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

鸿蒙原生应用开发-网络管理HTTP数据请求

一、场景介绍 应用通过HTTP发起一个数据请求&#xff0c;支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。 二、接口说明 HTTP数据请求功能主要由http模块提供。 使用该功能需要申请ohos.permission.INTERNET权限。 涉及的接口如下表&#xff0c;具体的…

【pytest】fixture机制

目录 概念fixture 的主要特点测试场景1. 准备和清理测试数据2. 模拟外部依赖3. 共享资源&#xff08;如数据库连接&#xff09;4. 使用内置 fixture5. 自动使用 fixture 用途 概念 fixture机制是pytest测试框架中的一个核心概念&#xff0c;它提供了一种用于处理测试所需资源的…

vim中如何使用Vundle插件管理器?

本文结构&#xff1a; a、简介 b、安装 c、用法举例 a、Vundle是一个Vim插件管理器&#xff0c;它极大地简化了Vim插件的安装、更新和卸载过程。Vundle通过简化Vim插件的管理过程&#xff0c;帮助用户更高效地定制他们的Vim编辑环境。 b、安装Vundle Vundle的安装通常是通…

鸿蒙OS元服务开发:【WebGL网页图形库开发概述】

WebGL的全称为Web Graphic Library(网页图形库)&#xff0c;主要用于交互式渲染2D图形和3D图形。目前HarmonyOS中使用的WebGL是基于OpenGL裁剪的OpenGL ES&#xff0c;可以在HTML5的canvas元素对象中使用&#xff0c;无需使用插件&#xff0c;支持跨平台。WebGL程序是由JavaScr…

HBase报错:Master is initializing

现象&#xff1a;org.apache.hadoop.hbase.PleaseHoldException: Master is initializing 描述&#xff1a;在启动HBase之后进入bin/hbase shell 命令行进行一些操作&#xff0c;比如建表或者添加数据到表中出现这种报错org.apache.hadoop.hbase.PleaseHoldException: Master …

《信息技术服务 智能运维 第2部分:数据治理》国家标准2024年第一次线下编写会议成功召开

2024年3月13日~15日&#xff0c;由运维数据治理国标编制组主办的运维数据治理国家标准2024年第一次编写工作会议在上海成功召开。 本次会议由云智慧&#xff08;北京&#xff09;科技有限公司承办&#xff0c;来自南网数字集团信通公司、太保科技、平安银行、广发银行、广东农…

LeetCode:1997. 访问完所有房间的第一天(DP Java)

目录 1997. 访问完所有房间的第一天 题目描述&#xff1a; 实现代码与解析&#xff1a; DP 原理思路&#xff1a; 1997. 访问完所有房间的第一天 题目描述&#xff1a; 你需要访问 n 个房间&#xff0c;房间从 0 到 n - 1 编号。同时&#xff0c;每一天都有一个日期编号&…

hadoop3.0 非高可用安装

伪分布式集群&#xff0c;不依赖zookeeper的hadoop集群 只有namenode, 和datanode, 可以有两个namenode. 没有zookeeper, 没有zkfc, 没有journalnode. 只在学习的时候使用, 生存环境不适用 . 生产环境用的高可用集群见 https://blog.csdn.net/weijiqian/article/details/13715…

什么是AIGC,AIGC的应用领域有哪些,以及对AIGC的未来展望有什么值得关注的方向

AIGC:人工智能生成内容的深度解析 在数字技术的浪潮中,AIGC(ArtificialIntelligenceGeneratedContent,人工智能生成内容)逐渐崭露头角,成为继专业生产内容(PGC)和用户生产内容(UGC)之后的新型内容创作方式。它不仅改变了内容生产的传统模式,更在多个行业中展现出…

QA测试开发工程师面试题满分问答6: 如何判断接口功能正常?从QA的角度设计测试用例

判断接口功能是否正常的方法之一是设计并执行相关的测试用例。下面是从测试QA的角度设计接口测试用例的一些建议&#xff0c;包括功能、边界、异常、链路、上下游和并发等方面&#xff1a; 通过综合考虑这些测试维度&#xff0c;并设计相应的测试用例&#xff0c;可以更全面地评…

蓝桥杯第十五届抱佛脚(七)前缀和与差分

蓝桥杯第十五届抱佛脚&#xff08;七&#xff09;前缀和与差分 前缀和 前缀和算法是一种在数组处理中非常有效的技术&#xff0c;特别是当需要频繁查询某个固定区间内的元素和时。这种算法可以在 O(N) 的时间内预处理数组&#xff0c;并且能在 O(1) 的时间内回答区间和的查询…

CCF-B推荐会议 ICSME’24 4月11日截稿 速来参与

会议之眼 快讯 第40届ICSME 2024 (IEEE International Conference on Software Maintenance and Evolution)即IEEE软件维护与发展国际会议将于 2024 年 10月6日-11日在美国弗拉格斯塔夫阿兹举行&#xff01;ICSME是学术界、工业界和政府研究人员和从业者的首要国际论坛&#x…

阿里AI编码助手“通义灵码”安装及使用

1.介绍 “通义灵码”是一款基于阿里云通义代码大模型打造的智能编码助手&#xff0c;产品于2023年10月31日云栖大会上&#xff0c;正式对外发布。 核心使用场景&#xff1a;代码智能生成和研发智能问答。 主要功能点&#xff1a; &#xff08;1&#xff09;行级/函数级实时…