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

微信建一个网站智慧物流企业网站建设方案

微信建一个网站,智慧物流企业网站建设方案,网站建设手机官网,宁乡住房和城乡建设局网站数组中的重复数据 数组中重复的数字 错误的集合 以第三题,错误的集合为例 对于这样的问题,有很简单的解决方式,先遍历一次数组,用一个哈希表记录每个数字出现的次数,然后遍历一次 [1…N],看看那个元素重…

数组中的重复数据

数组中重复的数字

错误的集合

以第三题,错误的集合为例

对于这样的问题,有很简单的解决方式,先遍历一次数组,用一个哈希表记录每个数字出现的次数,然后遍历一次 [1…N],看看那个元素重复出现,那个元素没有出现,就 OK 了。

但问题是,这个常规解法需要一个哈希表,也就是 O(N) 的空间复杂度。你看题目给的条件那么巧,在 [1…N] 的几个数字中恰好有一个重复,一个缺失

O(N) 的时间复杂度遍历数组是无法避免的,所以我们可以想想办法如何降低空间复杂度,是否可以在 O(1) 的空间复杂度之下找到重复和缺失的元素呢?

思路分析

这个问题的特点是,每个元素和数组索引有一定的对应关系。

我们现在自己改造下问题,暂且将 nums 中的元素变为 [0…N-1],这样每个元素就和一个数组索引完全对应了,这样方便理解一些。

如果说 nums 中不存在重复元素和缺失元素,那么每个元素就和唯一一个索引值对应,对吧?

现在的问题是,有一个元素重复了,同时导致一个元素缺失了,这会产生什么现象呢?会导致有两个元素对应到了同一个索引,而且会有一个索引没有元素对应过去

那么,如果我能够通过某些方法,找到这个重复对应的索引,不就是找到了那个重复元素么?找到那个没有元素对应的索引,不就是找到了那个缺失的元素了么?

核心是将元素就看成是索引,通过这个索引去访问数据,通过将每个索引访问的元素变成负数,以表示这个索引被对应过一次了,循环的时候发现通过索引访问的元素是负数,那么就说明他是重复的

int[] findErrorNums(int[] nums) {int n = nums.length;int dup = -1;for (int i = 0; i < n; i++) {int index = Math.abs(nums[i]);// nums[index] 小于 0 则说明重复访问if (nums[index] < 0)dup = Math.abs(nums[i]);elsenums[index] *= -1;}int missing = -1;for (int i = 0; i < n; i++)// nums[i] 大于 0 则说明没有访问if (nums[i] > 0)missing = i;return new int[]{dup, missing};
}

然后对于index的偏移需要额外处理一下

http://www.yayakq.cn/news/45820/

相关文章:

  • 网站有了域名然后怎么做php第一季网站开发实例教程
  • 织梦装修设计网站模板让公司做网站要注意什么
  • 东莞网站营销公司网站建设中应注意的问题
  • 龙华企业网站建设seo免费资源大全
  • 重庆本地网站有哪些江苏建设人才网证书查询电子证书
  • ip网站架设微信小程序cms系统
  • 南京市住房建设网站个性化网站模板
  • 网站上线后做什么网站做标签页
  • 网站济南网站建设江西建设网官方网站
  • 网站界面结构wordpress的按装方法
  • 社区建站网站系统广州建设教育网站
  • 简诉网站建设的基本流程装潢设计是干嘛的
  • a站是啥t型布局网站实例
  • 有道搜索seo顾问公司
  • 网站开发员属于网站图片alt属性
  • 安阳做网站推广常平镇网站建设
  • 有些网站突然无法访问网站怎么做架构图
  • 免费建个网站wordpress php代码编辑器
  • 手机网站用什么做的html网上购物系统
  • 网站备案要多久东软 网站群平台建设
  • 网站单页源码大型网站怎么做
  • 建设网站需要哪些设备在IIs下建设一个网站
  • 网站栏目页优化优秀网站建设报价
  • 网站开发目的与意义建设网站需要多少钱济南兴田德润地址
  • 怎么做网站教程图片怎么查询网站是否被降权
  • 做视频网站赚做视频网站赚外贸做网站要多久做好
  • 深圳市盐田区建设局网站北京市市场监督管理局官网
  • 做一网站要什么软件vue.js做网站
  • 无成本搭建属于自己的网站用了wordpress的网站
  • 品牌网站建设报价单aspcms中引文 网站修改配置