当前位置: 首页 > news >正文

2023-08-07力扣今日四题-好题

链接:

剑指 Offer 03. 数组中重复的数字

题意:

如题

解:

看到一个很牛的时间复杂度O(n)的原地算法:由于数组长度n,数组内只有0到n-1,那么,我们用对应-n到-1表示nums[index]出现过一次,-2n到-n-1表示出现两次

具体是怎么做呢,我们遍历数组,遇到的下标x的数字t,对于nums[t]我们就减去n,表示t出现了,如果t>x那它就修改了还没遍历到的数字,但是当我们遍历到t的时候,如果发现他处于-n到-1的区间,那么我们完全可以依靠+n还原它的数值,使后序操作正常进行,如果t<x那么就更好说了,因为nums[t]已经使用过了,可以直接用来标记数字出现

同时,我们知道原数组只有0和正数,所以当我们要减操作的时候,发现原目标nums[t]已经小于0,那么t就是答案

实际代码:

#include<bits/stdc++.h>
using namespace std;
int findRepeatNumber(vector<int>& nums)
{int lg=nums.size();for(auto& num:nums){int temp=num;if(temp<0) temp+=lg;//还原数值 if(nums[temp]<0) return temp;nums[temp]-=lg;}return 0;
}
int main()
{vector<int> nums;int num;while(cin>>num) nums.push_back(num);int ans=findRepeatNumber(nums);cout<<ans<<endl;return 0;
}

限制:

  • 2 <= n <= 100000
http://www.lryc.cn/news/113697.html

相关文章:

  • Packet Tracer - IPv4 和 IPv6 编址故障排除
  • PHP国外在线教育系统源码 在线课程系统源码 直播课程系统源码提供在线课程,现场课程,测验
  • Abaqus 中最常用的子程序有哪些 硕迪科技
  • 容器——3.Collection 子接口之 Set
  • 将整数,结构体,结构体数组,链表写到文件
  • UNIX基础知识:UNIX体系结构、登录、文件和目录、输入和输出、程序和进程、出错处理、用户标识、信号、时间值、系统调用和库函数
  • IDEA2021.3.1-优化设置IDEA2021.3.1-优化设置、快捷方式改为eclipse、快捷键等
  • 使用C#的窗体显示与隐藏动画效果方案 - 开源研究系列文章
  • 09_Vue3中的 toRef 和 toRefs
  • JAVA获取视频音频时长 文件大小 MultipartFileUtil和file转换
  • 刷题笔记 day9
  • 小白解密ChatGPT大模型训练;Meta开源生成式AI工具AudioCraft
  • 1 swagger简单案例
  • Flutter写一个android底部导航栏框架
  • 关于自动化测试用例失败重试的一些思考
  • JS逆向之顶像滑块
  • 【css】textarea-通过resize:none 禁止拖动设置大小
  • Linux内核学习小结
  • 八、ESP32控制8x8点阵屏
  • 使用gitee创建远程maven仓库
  • 基于C#的应用程序单例唯一运行的完美解决方案 - 开源研究系列文章
  • 2023-08-07力扣今日二题
  • Spring接口ApplicationRunner的作用和使用介绍
  • 奶牛排队 java 思维题
  • uniapp 微信小程序 判断数据返回的是jpg还是pdf,以及pdf预览
  • SpringBoot 的事务及使用
  • Android中的ABI
  • Python爬虫在用户行为模型构建中的应用与挑战
  • LangChain与大模型的学习
  • C语言标准定义的32个关键字