Find All Numbers Disappeared in an Array

leetcodeA题之判断重复据,两次,多次 本题源自leetcode 442 给定一个整数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。 找到所有出现两次的元素。 你可以用到任何额外空间并在O(n)时间复杂度内解决这个问题吗? 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [2,3] 第一种,遍历整个数组,将数组中的i插入i-1的位置,然后遍历数组,如果... 阅读详情

有一个整型数组,其中 1 ≤ a[i] ≤ n (n为数组的大小),有的元素出现两次而其他元素出现一次。找出所有在[1,n]之内的但没有出现的元素。

另外:你能否不使用额外的存储空间,在O(n)的时间内解决这个问题?假设返回的数组不计入额外的空间里。


思路:

1.新建一个大小size与给定数组大小array相同的数组result,其中的元素排列为1,2,3,4,5,6,7……size。遍历array的元素,如果在result的数组里存在,就把这个元素从result里移除。这个方法容易理解,但是时间复杂度高,空间和时间效率都非常差。

2.负数标记法(很惭愧,解决这个问题的最后思路也是参考别人的):遍历给定数组array,获取元素n的绝对值,将array[|n|-1]标记为负数。再次遍历array,判断array[i+1]的正负,如果为正则将(i+1)添加进返回的数组result中,如果为负则跳过。


class Solution {
public:
    vector<int> findDisappearedNumbers(vector<int>& nums) {
        vector<int> result;

	for (int i = 0; i < nums.size(); i++) {
		int n = nums[i];
		nums[abs(n) - 1] = -abs(nums[abs(n)-1]);
	}
	for (int i = 0; i < nums.size(); i++) {
		if (nums[i] > 0) {
			result.push_back(i + 1);
		}
	}
	return result;
    }
};


Excel-MCP实战指南:零代码实现大模型与Excel的智能交互 本文详细介绍了Excel-MCP工具如何实现大模型与Excel的无缝交互,无需编写代码即可完成据读写、图表生成等复杂操作。通过实战案例展示了Excel-MCP在销售报表自动化、财务对账等企业级场景中的应用,大幅提升工作效率。文章还提供了安装指南、核心功能解析和常见问题解决方案。 阅读详情

相关推荐

Unity3d游戏开发工程师笔试题学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、学习背景二、错题记录2.读入据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必可少的KaTeX学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 前言 提示:这里可以.

m0_54231818的博客 5442

LeetCode|442.数组中重复的

LeetCode习题答案汇总 题目: 给定一个整数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。 找到所有出现两次的元素。 你可以用到任何额外空间并在O(n)时间复杂度内解决这个问题吗? 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [2,3] 分析: 先将数组进行排序 通过遍历找到两个一样的就添加进返回列表中 代码: class Solution: def findDuplicates(self, nums: List[in

小黄的博客 343

欧姆龙PLC与富士变频器Modbus通讯_欧姆龙485_PLC_欧姆龙

欧姆龙PLC与富士伺服驱动器485通讯实例

Java实现 LeetCode 442 数组中重复的

442. 数组中重复的据 给定一个整数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。 找到所有出现两次的元素。 你可以用到任何额外空间并在O(n)时间复杂度内解决这个问题吗? 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [2,3] * 这个题属于技巧题 首先仔细看输入的给定的数组值 该值的区间为 1 ≤ a[i] ≤ n ...

南 墙 1万+

14.修改数组找出重复的字 - 基于python

给定一个长度为n+1n+1的数组nums,数组中所有的均在1∼n1∼n的范围内,其中n≥1n≥1。 请找出数组中任意一个重复的,但能修改输入的数组。 样例 给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。 返回 2 或 3。 思考题:如果只能使用O(1)O(1)额外空间,该怎么做呢? 算法 (分治,抽屉原理) O(nlogn)O(nlog...

javaisnotgood的博客 498

LeetCode 442 数组中重复的

给定一个整数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。 找到所有出现两次的元素。 你可以用到任何额外空间并在O(n)时间复杂度内解决这个问题吗? 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [2,3] 解法一: 使用额外的空间(python) 这个题目开头暗示了n的范围,所以可以加以利用,将元素转换成数组的索引并对应的将...

weixin_42249929的博客 432

LeetCode——442. 数组中重复的

题目描述: 给定一个整数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。 你可以用到任何额外空间并在O(n)时间复杂度内解决这个问题吗? 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [2,3] 解题思路:1<=nums[i]<=n 且数组长度也是n,所以可以利用数组下标,将遍历到的nums[i]记录在第nums[i]个元素中。 将第nums[i]个元素取相反, 这是因为取相反既保留了原来元素的信息(

FYPPPP的博客 254

leetcode之 Find All Numbers Disappeared in an Array 问题

漫漫学习路 779

448. Find All Numbers Disappeared in an Array

题目448. Find All Numbers Disappeared in an Array解题思路题目描述是给一串长度为n,大小在[1,n]的乱序字,有的字出现2次,有的字出现1次,计算出有多少个字没出现过。没出现的字的位置是被出现了2次的字站了,我的思路是让这些乱序的字归位,出现1次的字正常归位,出现2次的字多出来的一个令其等于-1,最后统计一下-1出现在哪个位置即可。举个栗

weixin_40149887的博客 191

leetcode 448. Find All Numbers Disappeared in an Array

https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/ 题目要求使用额外空间,并且时间复杂度为O(n) 思路:若元素值a[ i -1 ]与其序号i 等,并且a[i-1] 与a[ a[i-1] -1]等,则将a[i-1] 与 a[ a[i-1] -1] 对调位置后, 两者对调后至少有一个...

rock4you 170

【python3】leetcode 448. Find All Numbers Disappeared in an Array(easy)

leetcode 448. Find All Numbers Disappeared in an Array(easy) 本来想天秀一把 直接用listcomp语句return return [i for i in range(1,len(num)+1) if i not in nums] 然而超时哈哈哈。。。。:(。。。。 只能拆开写啦,set之后length会变所以先存一个变量 ...

momottyy的专栏 267

448. Find All Numbers Disappeared in an Array

448.Find All Numbers Disappeared in an Array 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] in...

热爱编程,热爱技术 355

442. 数组中重复的

442. 数组中重复的据 1.题目描述 给定一个整数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。 找到所有出现两次的元素。 你可以用到任何额外空间并在O(n)时间复杂度内解决这个问题吗? 示例: 2.思路 利用题目中所给信息 1 ≤ a[i] ≤ n ,将出现过的字作为数组index(访问元素时需要减一),如果出现一次的,将该ind...

jiangdongxiaobawang的博客 241

leetcode 442 数组中的重复

题目:给定一个整数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。 解决:因为题目中数组的元素是1-N,所以可以用下标记录每个元素出现的次(1)先遍历数组,把以元素值减一取余的下标中的值值加上n。(被加的数组元素取余还是原来的值) (2)遍历数组当发现元素值大于2*n则下标加一就是重复出现的元素。 class Solution { public: vector<int> findDuplicates(vec

weixin_43313092的博客 190

leetcode:442.数组中重复的

题目描述: 给定一个整数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。 找到所有出现两次的元素。 你可以用到任何额外空间并在O(n)时间复杂度内解决这个问题吗? 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [2,3] 解题思路: 桶计(简单但符合题意) 使用int数组对nums数组中的元素进行计,然后遍历这个数组,将出现次为2的元素加入结果list中即可 标记法 由于题目给定nums[i]的范围是[1,n],且元素最多出现两次

wyg1973017714的博客 527

leetcode——442

题目: 给定一个整数组 a,其中1 ≤ a[i] ≤n(n为数组长度), 其中有些元素出现两次而其他元素出现一次。 找到所有出现两次的元素。 你可以用到任何额外空间并在O(n)时间复杂度内解决这个问题吗? 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [2,3] 解题思想: 题目有一个重要条件1<a[i]<n,这个条件我们可以得到如果a[i]这个...

程序猿的博客 650
上一篇: Island Perimeter
下一篇: Maximum Depth of Binary Tree
伊洛MIN
博客等级 码龄12年 0粉丝 4原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值