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

青海省安建设管理部门网站个人博客网站设计模板

青海省安建设管理部门网站,个人博客网站设计模板,网站分辨率,成都企业网站建设哪家专业目录 一、消失的数字 二、轮转数组 三、 单选题 一、消失的数字 数组nums包含从0到n的所有整数#xff0c;但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在 O(n) 时间内完成吗#xff1f; 注意#xff1a;本题相对书上原题稍作改动 示例 1#xff1a; 输入…目录 一、消失的数字 二、轮转数组 三、 单选题 一、消失的数字 数组nums包含从0到n的所有整数但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在 O(n) 时间内完成吗 注意本题相对书上原题稍作改动 示例 1 输入[3,0,1] 输出2 示例 2 输入[9,6,4,2,3,5,7,0,1] 输出8 代码实现一使用异或运算 int missingNumber(int* nums, int numsSize) {int ans 0;for (int i 0; i numsSize; i){ans ^ i;}for (int i 0; i numsSize; i){ans ^ nums[i];}return ans; } 代码实现二使用等差数列求和公式 int missingNumber(int* nums, int numsSize) {int sum numsSize * (numsSize 1) / 2;for (int i 0; i numsSize; i){sum - nums[i];}return sum; } 以上两种算法的时间复杂度都是 O(n)空间复杂度都是 O(1)。 二、轮转数组 给定一个整数数组 nums将数组中的元素向右轮转 k 个位置其中 k 是非负数。 示例 1 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,4] 示例 2 输入nums [-1,-100,3,99], k 2 输出[3,99,-1,-100] 解释: 向右轮转 1 步: [99,-1,-100,3] 向右轮转 2 步: [3,99,-1,-100] 提示 1 nums.length 10^5 -2^31 nums[i] 2^31 - 1 0 k 10^5 进阶 尽可能想出更多的解决方案至少有 三种 不同的方法可以解决这个问题。 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗 代码实现一 void rotate(int* nums, int numsSize, int k) {k % numsSize;int* tmp (int*)malloc(sizeof(int) * k);if (NULL tmp){perror(malloc failed!);return;}// 首先把数组后面的 k 个元素存放到 tmp 指向的临时空间中int j 0;for (int i numsSize - k; i numsSize; i){tmp[j] nums[i];}// 然后把数组前面的 numsSize - k 个元素按从后往前的顺序依次往后移动 k 个位置for (int i numsSize - k - 1; i 0; --i){nums[i k] nums[i];}// 最后再将存放在临时空间中的 k 个元素放回数组中for (int i 0; i k; i){nums[i] tmp[i];}free(tmp);tmp NULL; } 该算法的时间复杂度是 O(n)空间复杂度是 O(k)。 代码实现二 void reverse(int* nums, int left, int right) {while (left right){int tmp nums[left];nums[left] nums[right];nums[right] tmp;left;--right;} } ​ void rotate(int* nums, int numsSize, int k) {k % numsSize;reverse(nums, 0, numsSize - k - 1);reverse(nums, numsSize - k, numsSize - 1);reverse(nums, 0, numsSize - 1); } 该算法的时间复杂度是 O(n)空间复杂度是 O(1)。 分析示例一 1 2 3 4 | 5 6 7即根据 k 将整数数组 nums 分为左右两个部分。 4 3 2 1 | 7 6 5它是分别逆序左右两个部分后得到的结果。 5 6 7 | 1 2 3 4它是整体逆序后得到的结果。 在逆序的过程中越靠后的元素经过逆序后就会越靠前因此整体逆序后左右两部分的元素发生了互换但由于之前已经分别逆序了左右两部分的元素因此在第 3 步后两部分的元素的顺序较一开始没有发生改变。 三、 单选题 给定一个整数 sum从有 n 个有序元素的数组中寻找元素 a, b使得 a b 的结果最接近 sum最快的平均时间复杂度是 A、O(n) B、O(nlogn) C、O(n^2) D、O(logn) 代码实现假设数组是按非递减顺序排列 int* findClosestPair(int* nums, int numsSize, int sum, int* returnSize) {*returnSize 2;int* ans (int*)malloc(sizeof(int) * 2);if (NULL ans){perror(malloc failed!);return NULL;}int left 0;int right numsSize - 1;int dif INT_MAX;while (left right){int res nums[left] nums[right] - sum;if (abs(res) dif) // 判断是否更新误差{ans[0] nums[left];ans[1] nums[right];dif abs(res);}if (res 0) // 此时 nums[left] nums[x] res 0其中 x rightleft;else if (res 0) // 此时 nums[right] nums[x] res 0其中 x left --right;elsebreak;}return ans; } 该算法的时间复杂度为 O(n)因此正确答案是 A。
http://www.hkea.cn/news/14320526/

相关文章:

  • iis ip访问网站有没有可以免费看的
  • 株洲网站建设优度软件技术开发合同
  • 网站建设课设报告晋源网站建设
  • 网站建设支付方式seo技术培训机构
  • 接单做一个网站多少钱安装网站模版视频教程
  • 云南房产网站建设核动力网站建设
  • 做字素的网站江苏建设人才考试网二建
  • 公司做的网站搜索不到抖音 运营
  • 韶关市网站建设上海seo培训中心
  • 宁波专业网站推广制作服务天长网站建设
  • 宁陵做网站的公司如何做网站建设
  • wordpress安装到网站石排网站设计
  • php的网站正规的大连网站建设
  • 网站建设维护论文网站制作软件免费下载
  • 学seo网站推广好吗wordpress列类型
  • 营销型网站建设价格怎么做企业的网站首页
  • 化妆品网站建设的设计思路黑马教育培训官网
  • 网站开发(源代码)360建筑网证书
  • 电子商务网站建设的常用开发方法html网站如何更新
  • html5响应式网站制作wordpress 导出数据库
  • 东莞网站建设地点优化河南省新闻出版培训中心
  • 网站恶意注册宜黄建设局网站
  • 广州网站推广¥做下拉去118cr做co的网站
  • 阿里云网站建设——部署与发布自己做的网站别人怎么访问
  • 青海做网站好的公司北京网站建设网络公司
  • 黑龙江省华龙建设有限公司网站杭州强龙网站建设
  • win2008 建立网站海外广告优化师
  • 马鞍山网站建设报价简述网站建设优劣的评价标准
  • 家装网站贴吧怎么做网站视频
  • 北京市优化网站百度搜索引擎关键词