LeetCode中等题之数组中重复的数据

news/2024/11/25 0:26:20/

题目

给你一个长度为 n 的整数数组 nums ,其中 nums 的所有整数都在范围 [1, n] 内,且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数,并以数组形式返回。
你必须设计并实现一个时间复杂度为 O(n) 且仅使用常量额外空间的算法解决此问题。
示例 1:
输入:nums = [4,3,2,7,8,2,3,1]
输出:[2,3]
示例 2:
输入:nums = [1,1,2]
输出:[1]
示例 3:
输入:nums = [1]
输出:[]
提示:
n == nums.length
1 <= n <= 10^5
1 <= nums[i] <= n
nums 中的每个元素出现 一次 或 两次
来源:力扣(LeetCode)

解题思路

  这是一个经典的鸽笼原理题,一个萝卜一个坑,如果坑已经被填上了,就能发现谁是重复的了。以示例1为例,我们想办法在原数据不丢失的情况下还能表示当前坑位是否被占用。题目给定了数组中的数字是【1,n】这也就预示着可以利用数字的正负来标记坑位是否被占用的信息,举例:第一个元素4那么第四个位置的7变成-7即可,这样7的信息也不会丢失,当我们遍历到7那里,直接取绝对值就能还原出它真实的数值。-7表示第四个坑位已经被占用,这样在遍历的过程中就能轻松发现被占的坑。

class Solution:def findDuplicates(self, nums: List[int]) -> List[int]:temp=[]for i in range(len(nums)):if nums[abs(nums[i])-1]>0:nums[abs(nums[i])-1]=-nums[abs(nums[i])-1]else:temp.append(abs(nums[i]))print(nums)return temp

在这里插入图片描述


http://www.ppmy.cn/news/605348.html

相关文章

矩阵的卷积核运算(一个简单小例子的讲解)深度学习

卷积运算&#xff1a;假设有一个卷积核h&#xff0c;就一般为3*3的矩阵&#xff1a;有一个待处理矩阵A&#xff1a;h*A的计算过程分为三步第一步&#xff0c;将卷积核翻转180&#xff0c;也就是成为了第二步&#xff0c;将卷积核h的中心对准x的第一个元素&#xff0c;然后对应元…

LeetCode简单题之增减字符串匹配

题目 由范围 [0,n] 内所有整数组成的 n 1 个整数的排列序列可以表示为长度为 n 的字符串 s &#xff0c;其中: 如果 perm[i] < perm[i 1] &#xff0c;那么 s[i] ‘I’ 如果 perm[i] > perm[i 1] &#xff0c;那么 s[i] ‘D’ 给定一个字符串 s &#xff0c;重构排…

卷积神经网络之卷积计算、作用与思想 深度学习

博客&#xff1a;blog.shinelee.me | 博客园 | CSDN 卷积运算与相关运算 在计算机视觉领域&#xff0c;卷积核、滤波器通常为较小尺寸的矩阵&#xff0c;比如3333。从这个角度看&#xff0c;多层卷积是在进行逐层映射&#xff0c;整体构成一个复杂函数&#xff0c;训练过程是在…

LeetCode中等题之面试题 01.05. 一次编辑

CSDN话题挑战赛第1期 活动详情地址&#xff1a;https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f 参赛话题&#xff1a;Leetcode刷题指南 话题描述&#xff1a;代码能力是一个程序员的基本能力&#xff0c;而除了做项目之外&#xff0c;大家接触到的最常规的提升…

LeetCode简单题之非递增顺序的最小子序列

题目 给你一个数组 nums&#xff0c;请你从中抽取一个子序列&#xff0c;满足该子序列的元素之和 严格 大于未包含在该子序列中的各元素之和。 如果存在多个解决方案&#xff0c;只需返回 长度最小 的子序列。如果仍然有多个解决方案&#xff0c;则返回 元素之和最大 的子序列…

TensorFlow基础笔记(11) max_pool2D函数 深度学习

# def max_pool2d(inputs, # kernel_size, # stride2, # paddingVALID, # data_formatDATA_FORMAT_NHWC, # outputs_collectionsNone, # scopeNone):#"VALID"模式下 #输…

LeetCode简单题之转化时间需要的最少操作数

题目 给你两个字符串 current 和 correct &#xff0c;表示两个 24 小时制时间 。 24 小时制时间 按 “HH:MM” 进行格式化&#xff0c;其中 HH 在 00 和 23 之间&#xff0c;而 MM 在 00 和 59 之间。最早的 24 小时制时间为 00:00 &#xff0c;最晚的是 23:59 。 在一步操作…