Array:Find All Numbers Disappeared in an Array

news/2024/7/23 19:12:48 标签: runtime

Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.

Find all the elements of [1, n] inclusive that do not appear in this array.

Could you do it without extra space and in O(n) runtime? You may assume the returned list does not count as extra space.

Example: Input:[4,3,2,7,8,2,3,1],Output:[5,6]

题目大意:

给定一个整数数组,其中1 ≤ a[i] ≤ n (n = 数组长度),一些元素出现两次,其他的出现一次。

寻找所有[1, n]中没有出现在数组中的元素。

可以不使用额外空间并在O(n)运行时间求解吗?你可以假设返回列表不算额外空间。

解题思路:

需要注意的是数组元素大小在1到n之间,n为数组长度。初做时没有注意到这点。思路是正负号标记法,循环数组,令nums[abs(nums[i])-1] = -nums[abs(nums[i])-1],第二次循环中没有被标记为负的元素的索引加上1便是缺失的数。

如数组      [1,2,3,3,5,6]

数组下标为{0,1,2,3,4,5}

缺失了4,因此索引为3的元素将不会被标记为负,所以只需找到所有正数的索引值加上1即可。

    public List<Integer> findDisappearedNumbers(int[] nums) {
        List<Integer> res = new ArrayList<>();
        for (int i = 0; i < nums.length; i++) {
            int val = Math.abs(nums[i]) - 1;
            if (nums[val] > 0) 
                nums[val] = -nums[val];
        }
        
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] > 0)
                res.add(i + 1);
        }
        return res;
    }

 

 

转载于:https://www.cnblogs.com/ltchu/p/6410512.html


http://www.niftyadmin.cn/n/1445253.html

相关文章

MFC ListCtrl控件

ListCtrl控件的部分操作&#xff0c;有些内容是从http://www.cppblog.com/finehai/archive/2009/09/17/96574.html这位大神博客中转载的 //设置CListCtrl的属性LONG lStyle;lStyle GetWindowLong(m_listinfo.m_hWnd, GWL_STYLE);//获取当前窗口stylelStyle & ~LVS_TYPEMAS…

ASP中FSO的神奇功能 - 写文件(转)

假设你想创建一个简单的留言簿&#xff0c;你可以建立一个数据库&#xff0c;在其中存储用户的信息。然而&#xff0c;如果并不需要数据库的强大功能&#xff0c;使用FSO来存储信息将节省你的时间和金钱。并且&#xff0c;一些ISP也许限制了web上的数据库应用。 假设你在一个表…

调节技术术语和部分传递系统的举例分析

1、模拟信号&#xff1a;4种例子&#xff1b;数字信号&#xff1a;有限且离散信息参数取值的信号2、起模拟作用的传递环节或系统的特征&#xff1a;模拟输出信号再现模拟输入信号&#xff08;信号必须不存在线性关系......?&#xff09;3、传输周期&#xff1a;nt小于等于采样…

VC++ ADO操作数据库

//进行简单的查询和插入。Password改成自己的密码 和Data Source要改成自己的主机名或者IP _ConnectionPtr m_pConnection;//连接对象指针_RecordsetPtr m_pRecordset;//记录集对象指针//初始化COM环境CoInitialize(NULL);try{m_pConnection.CreateInstance(__uuidof(Connectio…

uva 10439 - Temple of Dune(几何+枚举)

题目链接&#xff1a;uva 10439 - Temple of Dune #include <cstdio> #include <cstring> #include <cmath> #include <algorithm>using namespace std; const double pi 4 * atan(1); const double eps 1e-5;struct Point {double x, y;Point (doub…

在ASP中调用dll (转)

动态联接库(DLL)是加快应用程序关键部分的执行速度的重要方法&#xff0c;但有一点恐怕大部分人都不知道&#xff0c;那就是在ASP文件也能通过调用DLL来加快服务器的执行速度&#xff0c;下面我简单的介绍一下在ASP文件调用DLL的步骤。 首先&#xff0c;必须得有DLL文件&#x…

完整项目学习-10项目发布即在linux系统中完成部署

文章目录1. 部署JDK1.1 上传JDK1.2 解压压缩包1.3 删除安装文件1.4 修改JDK名称1.5 检查JDK是否有效1.6 JDK环境变量配置2. Linux 项目部署2.1 项目搭建流程2.2 Linux安装Mariadb数据库2.3 后端项目发布2.3.1 后端项目修改2.3.2 后端项目打包2.3.3 上传jar包文件2.3.4 发布项目…

图解CSS3----1-关系选择器

CSS3----关系&#xff08;层次&#xff09;选择器 1、代码&#xff1a; <h1>包含选择符&#xff08;Descendant&#xff09;</h1><h3>选取在div1内包含的li元素</h3><div classdiv1><p>Sunlike阿理旺旺</p><ul><li>Sunl…