java - 输出在 O(n) 时间和 O(1) 空间中取反的数组数字
问题描述
给定一个整数数组。如果数字 a 及其否定 -a 都存在于数组中,则打印它。例如:如果给出 {10, 5, 0, 9, -10, 7, -5} 则打印 10, 5。我给了面试官 O(N) 时间和 O(N) 基于 HashMap 的空间复杂度代码,但他进一步要求我在保持时间复杂度 O(N) 的最坏情况下将空间复杂度降低到 O(1)。注意:不允许计数排序。请问,谁能给我提供 O(1) 空间复杂度的方法?
解决方案
如果数组元素是无序的并且在任意范围内,这在O(n)
时间和空间上是不可能的。O(1)
如果数组已排序,我们可以使用两个指针在这些约束内解决它。
推荐阅读
- r - 提取R中每个单词的第一个字母
- javascript - 两点之间的Chartjs线条颜色
- c# - 表单提交后从数据库中检索最新的主键C#
- redis - Redis:二级索引到期
- apache-kafka - 尝试启动 Zookeeper 服务器时出错 - Confluent 设置
- vue.js - Vuex - Normalizr 无法按预期工作
- amazon-web-services - 在 AWS 上尝试 Dask
- php - 如果在 Woocommerce 中应用了任何优惠券代码,请删除一些支付网关
- selenium-webdriver - 如果条件为真,则获取 webelements 列表
- protractor - 在量角器中上传外部文件