当前位置: 首页 > 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.15wanjia.com/news/49734.html

相关文章:

  • 深圳网站程序开发seo排名优化seo
  • 苏州网推广网站建设郑州网站技术顾问
  • 做网站学习什么seo教学平台
  • 香港网站空间租用哪个好河南网站推广优化
  • 如何选择做网站公司网站推广方法
  • phpcms做汽车网站简述搜索引擎的工作原理
  • 公司做网站的费用怎么记账搜索引擎优化的定义
  • 做网站都可以用什么框架设计网站官网
  • 做像58同城样的网站企业培训系统
  • 页面设计制作网站源码sem优化是什么意思
  • 网站制作常见问题西安关键词排名软件
  • 做网站怎么导入源码软文写作是什么意思
  • 做图网站大学生兼职网页设计软件
  • 服务器上 网站网络网站推广
  • 网站建设域名所有权营销策略的重要性
  • vs做网站示例网站站内推广怎么做
  • wordpress版本文件长沙网站优化排名推广
  • html官方下载林哥seo
  • html网站模板免费下载免费推广网站大全
  • 网站做不做账源码之家
  • 2015做那些网站致富搜索引擎技术基础
  • 昆明做网站的公司万江专业网站快速排名
  • 怎么给网站做 360快照廊坊seo管理
  • 做企业官网需要多少钱南宁百度推广seo
  • wordpress旧版编辑器长沙优化科技有限公司正规吗
  • 网站开发简易软件网站怎么找
  • 专业建站推广企业东莞seo优化排名推广
  • 如何设置网站百度网址链接是多少
  • 网站怎么添加在线客服宁德市教育局官网
  • 如何建设微信网站苏州seo关键词优化外包