[Swift]LeetCode442. 数组中重复的数据 | Find All Duplicates in an Array

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

Find all the elements that appear twice in this array.

Could you do it without extra space and in O(n) runtime?

Example:

Input:
[4,3,2,7,8,2,3,1]

Output:
[2,3]


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

找到所有出现两次的元素。

你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?

示例:

输入:
[4,3,2,7,8,2,3,1]

输出:
[2,3]

136ms
 1 class Solution {
 2     func findDuplicates(_ nums: [Int]) -> [Int] {
 3         var nums = nums
 4         var result = [Int]()
 5         for num in nums {
 6             nums[num - 1] = -nums[num - 1]
 7             if (nums[num - 1] > 0) {
 8                 result.append(num)
 9             }
10         }
11         return result
12     }
13 }


144ms

 1 class Solution {
 2     func findDuplicates(_ nums: [Int]) -> [Int] {
 3         var res = [Int]()
 4         var nums = nums
 5         for i in 0..<nums.count {
 6             let index = abs(nums[i]) - 1
 7             if nums[index] < 0 {
 8                 res.append(abs(index + 1))
 9             }
10             nums[index] = -nums[index]
11         }
12         return res
13     }
14 }


512ms

 1 class Solution {
 2     func findDuplicates(_ nums: [Int]) -> [Int] {
 3         var nums = nums
 4         var res:[Int] = [Int]()
 5         var n:Int = nums.count
 6         for i in 0..<n
 7         {
 8             nums[(nums[i] - 1) % n] += n
 9         }
10         for i in 0..<n
11         {
12             if nums[i] > 2 * n
13             {
14                 res.append(i + 1)
15             }
16         }
17         return res
18     }
19 }


708ms

 1 class Solution {
 2     func findDuplicates(_ nums: [Int]) -> [Int] {
 3         guard nums.count > 1 else {
 4             return []
 5         }
 6         var set = Set<Int>()
 7         var arr = [Int]()
 8         for i in nums {
 9             if set.contains(i) {
10                 arr.append(i)
11             } else {
12                 set.insert(i)
13             }
14         }
15         return arr
16     }
17 }

原文地址:https://www.cnblogs.com/strengthen/p/10339500.html

时间: 2024-08-29 18:03:34

[Swift]LeetCode442. 数组中重复的数据 | Find All Duplicates in an Array的相关文章

leetcode 442. 数组中重复的数据(Find All Duplicates in an Array)

目录 题目描述: 示例: 解法: 题目描述: 给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次. 找到所有出现两次的元素. 你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗? 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [2,3] 解法: class Solution { public: vector<int> findDuplicates(vector<int>& nums) {

442. 找出数组中重复的元素 Find All Duplicates in an ArrayGiven an array of integers

Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once. Find all the elements that appear twice in this array. Could you do it without extra space and in O(n) runtime? Example: Input: [4,3,2,7,

JS删除数组中重复的数据

Array.delRepeat = function (arr) {   var _arr = arr.slice(0),retArr = [];   for (var i = 0, len = _arr.length; i < len; i++) {     for (var j = i + 1; j < len; j++) {       if (_arr[i] == _arr[j]) {         break;       }     }     if (j == len) {  

(Java) LeetCode 442. Find All Duplicates in an Array —— 数组中重复的数据

Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once. Find all the elements that appear twice in this array. Could you do it without extra space and in O(n) runtime? Example: Input: [4,3,2,7,

442 Find All Duplicates in an Array 数组中重复的数据

给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次.找到所有出现两次的元素.你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?示例:输入:[4,3,2,7,8,2,3,1]输出:[2,3]详见:https://leetcode.com/problems/find-all-duplicates-in-an-array/description/ C++: 方法一: class Solution { public: vector

leetcode 442. 数组中重复的数据 java

题目: 给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次. 找到所有出现两次的元素. 你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗? 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [2,3] 解题: class Solution { public List<Integer> findDuplicates(int[] nums) { List<Integer> res = new Array

LeetCode 442.数组中重复的数据 - JavaScript

题目描述:给定一个整数数组 a,其中 1 ≤ a[i] ≤ n (n 为数组长度), 其中有些元素出现两次而其他元素出现一次. 找到所有出现两次的元素. 你可以不用到任何额外空间并在 O(n)时间复杂度内解决这个问题吗? 题目分析 这里的不使用任何额外空间,指的是不为哈希表开辟额外空间.最后要返回的元素,还是要放在数组内的. 解法 :原地哈希 因为不能使用额外空间存储哈希表,所以只能对数组本身做操作.题目提到元素的范围是 1 到 n,并且元素只可能出现 1 次或者 2 次. 因此这里可以使用符号

[Swift]LeetCode532. 数组中的K-diff数对 | K-diff Pairs in an Array

Given an array of integers and an integer k, you need to find the number of unique k-diff pairs in the array. Here a k-diff pair is defined as an integer pair (i, j), where i and j are both numbers in the array and their absolute difference is k. Exa

关于iOS去除数组中重复数据的几种方法

关于iOS去除数组中重复数据的几种方法 在工作工程中我们不必要会遇到,在数组中有重复数据的时候,如何去除重复的数据呢? 第一种:利用NSDictionary的AllKeys(AllValues)方法 可以将NSArray中的元素存入一个字典,然后利用AllKeys或者AllValues取得字典的所有键或值,这些键或值都是去重的.代码: NSArray *dataArray = @[@"2014-04-01",@"2014-04-02",@"2014-04-