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

网站建设 不违背深圳坪山区最新通告

网站建设 不违背,深圳坪山区最新通告,标书制作员是干什么的,河南 网站建设目录 一、题目描述 二、题目分析 2.1 方法一 2.1.1 思路 2.1.2 代码 2.2 方法二 2.2.1 思路 2.2.2 代码 2.3 方法三 2.3.1 思路 2.3.2 代码 三、完整代码 一、题目描述 oj链接#xff1a;https://leetcode.cn/problems/missing-number-lcci 数组nums包含从0到n的…目录 一、题目描述 二、题目分析 2.1 方法一 2.1.1 思路 2.1.2 代码 2.2 方法二 2.2.1 思路 2.2.2 代码 2.3 方法三 2.3.1 思路 2.3.2 代码 三、完整代码 一、题目描述 oj链接https://leetcode.cn/problems/missing-number-lcci 数组nums包含从0到n的所有整数但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗 示例 1 输入[3,0,1] 输出2 示例 2 输入[9,6,4,2,3,5,7,0,1] 输出8 二、题目分析 此题目要求算法在O(N)时间内完成也就是说时间复杂度不超过O(N)我们要找出数组nums中缺少的数有以下几种办法 2.1 方法一 2.1.1 思路 方法一主要是通过求和相减找出0-n中缺失的那个数先将0到n之间的数相加求和然后依次减去数组中的每个数得到的就是缺失的那个数。 注意这里求0到n的数相加的和我们使用了等差数列的求和公式sum(和) (n1)*n/2. 方法一的时间复杂度是O(N)我们要将0到n的和依次减去数组中的元素所以在这里我们需要遍历一遍数组即执行n次循环所以时间复杂度是O(N)他的空间复杂度是O(1)这个算法只额外开辟了几个变量属于是常数阶用O(1)来表示空间复杂度。 2.1.2 代码 int missingNumberTwo(int* nums, int n) {int sum n * (n 1) / 2;int i 0;for (i 0; i n; i){sum - nums[i];}return sum; } 2.2 方法二 2.2.1 思路 方法二主要是通过异或找出0-n中缺失的那个数在之前的博客操作符详解中具体对异或进行了解释如果不太清楚可以去看看。 对于任何一个数和0异或得到的都是他本身一个数和自己异或得到的是0并且异或是满足交换律的因此根据这一规律我们就可以找到0-n中缺失的那个数先将定义一个变量x将他初始化为0让他先和数组中的每个数进行异或操作然后再与0到n的每个数进行异或操作如果某个数在数组中和0-n中都存在异或之后为0如果有单独的一个数只在0-n中存在而不在数组中异或之后也无法消去将0分别与数组中的数以及0-n之间的数异或最后得到的就是缺失的那个数。 方法二的时间复杂度是O(N)我们要将0分别与数组中的数以及0-n之间的数异或需要遍历一次数组和依次0-n之间的数即执行2n次循环所以时间复杂度是O(N)他的空间复杂度是O(1)这个算法只额外开辟了几个变量属于是常数阶用O(1)来表示空间复杂度。 2.2.2 代码 int missingNumberOne(int* nums, int n) {int x 0;for (int i 0; i n; i){x ^ nums[i];}for (int i 0; i n 1; i){x ^ i;}return x; } 2.3 方法三 2.3.1 思路 方法三主要是先对数组进行排序处理然后使用二分查找在这里对数组排序我们使用的是qsort库函数使用qsort库函数还要提供一个比较函数compar。 方法三的时间复杂度是O(N*logN)在这个算法中我们要求时间复杂度分开来看二分查找的时间复杂度是O(logN)qsort的时间复杂度是O(N*logN)按照大O的渐进表示法此算法的时间复杂度是O(N*logN)。 注意题目中要求时间复杂度不超过O(N)所以这个思路在力扣上不会通过仅仅提供一种参考思路。 2.3.2 代码 int compar(const void* p1, const void* p2) {return *((int*)p1) - *((int*)p2); }int missingNumberThree(int* nums, int n) {qsort(nums, n, 4, compar);int i 0;for (i 0; i n; i){int exchange 1;int begin 0;int end n - 1;while (begin end){ int mid (begin end) / 2;if (i nums[mid])begin mid 1;else if (i nums[mid])end mid - 1;else{exchange 0;break;}}if (exchange 1){return i;}} } 三、完整代码 这道题是属于oj类型的题目所以在拿到vs上编译的时候需要自己写一个主函数在这里我们提供一个完整的函数。 #define _CRT_SECURE_NO_WARNINGS 1 #includestdio.hint compar(const void* p1, const void* p2) {return *((int*)p1) - *((int*)p2); }int missingNumberOne(int* nums, int n) {int x 0;for (int i 0; i n; i){x ^ nums[i];}for (int i 0; i n 1; i){x ^ i;}return x; }int missingNumberTwo(int* nums, int n) {int sum n * (n 1) / 2;int i 0;for (i 0; i n; i){sum - nums[i];}return sum; }int missingNumberThree(int* nums, int n) {qsort(nums, n, 4, compar);int i 0;for (i 0; i n; i){int exchange 1;int begin 0;int end n - 1;while (begin end){ int mid (begin end) / 2;if (i nums[mid])begin mid 1;else if (i nums[mid])end mid - 1;else{exchange 0;break;}}if (exchange 1){return i;}} }int main() {int nums[5] { 0 };int i 0;int n sizeof(nums) / sizeof(nums[0]);for (i 0; i n ; i){scanf(%d, nums[i]);}//1.异或int x missingNumberOne(nums, n);printf(%d\n, x);//2.求和再相减x missingNumberTwo(nums, n);printf(%d\n, x);//3.排序二分查找x missingNumberThree(nums, n);printf(%d\n, x);return 0; }
http://www.dnsts.com.cn/news/204144.html

相关文章:

  • 浙江人工智能建站系统软件苏宁易购网站建设分析
  • 青岛知名网站建设企业整合营销
  • 网站建设插导航条黑龙江省住房和城乡建设厅官网
  • 域名抢注网站建设深圳光明
  • 一个虚拟主机多个网站小程序用什么开发
  • 做iframe跳转怎么自适应网站网页规划书怎么写
  • dedecms 把自己的网站添加进去网络营销推广方案步骤
  • 陕西响应式网站建设公司微网站怎么做的好处
  • 快速优化网站建设有没有做电子名片的网站
  • 网站页面框架设计影响用户广告设计与制作就业方向是什么
  • 个人做短视频网站西安工作室
  • 南通市网站建设我的完重庆快建网站
  • 有没关于做动画设计师的网站怎么做网站建设销售
  • 做家乡网站代码章丘做网站哪家强
  • php 禁止电脑访问网站河南省建设厅执业资格注册中心网站
  • 河南公司网站制作咨询网站开发实训周志
  • 兰州做网站改版的公司网页制作人员的工作内容
  • 网站最新域名ip查询接口贵阳网站建设zu97
  • 做一个网站只做前端怎么做如何设置个人网站
  • 微网站 布局租房网站开发报告
  • 建设网站建设安全培训平台网站更换服务器要重新备案吗
  • 苏宁易购网站建设水平百度搜索推广开户
  • 网站服务器部署如何建立购物网站
  • 做外贸大一点的网站天津市住房和城乡建设厅官方网站
  • 哪里有免费的网站模板下载怎么邀约客户做网站
  • 工业和信息化部网站备案系统怎么登录网站开发需求分析内容
  • 广州seo网站推广顾问广州大题小做考研网站
  • 东软 网站群平台建设北京网站建设及app
  • 做个电商网站多少钱口碑好的免费网站建设
  • 网站建设包含哪些建设阶段wordpress手机版边侧导航