golang力扣leetcode 442.数组中重复的数据

简介: golang力扣leetcode 442.数组中重复的数据

442.数组中重复的数据

442.数组中重复的数据

题解

题目:给一个数组,返回数组中出现两次的数,数是1-n的,并且只出现一次或两次,要求常数的时间复杂度

思路:

1.数组下标0~n-1   数值大小1-n
2.如果v出现过,把v-1下标处的值置为负数
3.如果v-1下标处的值本来就是负数,说明v这个值是第二次遍历到了
4.将v添加到答案中

代码

func findDuplicates(nums []int) (ans []int) {
  for i := 0; i < len(nums); i++ {
    v := abs(nums[i])
    if nums[v-1] < 0 {
      ans = append(ans, v)
    } else {
      nums[v-1] *= -1
    }
  }
  return
}
func abs(i int) int {
  if i < 0 {
    return -i
  }
  return i
}
目录
相关文章
|
2月前
|
算法
Leetcode 初级算法 --- 数组篇
Leetcode 初级算法 --- 数组篇
43 0
|
2月前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
2月前
【LeetCode-每日一题】 删除排序数组中的重复项
【LeetCode-每日一题】 删除排序数组中的重复项
23 4
|
2月前
|
索引
Leetcode第三十三题(搜索旋转排序数组)
这篇文章介绍了解决LeetCode第33题“搜索旋转排序数组”的方法,该问题要求在旋转过的升序数组中找到给定目标值的索引,如果存在则返回索引,否则返回-1,文章提供了一个时间复杂度为O(logn)的二分搜索算法实现。
24 0
Leetcode第三十三题(搜索旋转排序数组)
|
2月前
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
91 0
|
2月前
力扣(LeetCode)数据结构练习题(2)
力扣(LeetCode)数据结构练习题(2)
31 0
|
2月前
|
存储
力扣(LeetCode)数据结构练习题
力扣(LeetCode)数据结构练习题
56 0
|
2月前
|
算法 C++
Leetcode第53题(最大子数组和)
这篇文章介绍了LeetCode第53题“最大子数组和”的动态规划解法,提供了详细的状态转移方程和C++代码实现,并讨论了其他算法如贪心、分治、改进动态规划和分块累计法。
70 0
|
2月前
|
C++
【LeetCode 12】349.两个数组的交集
【LeetCode 12】349.两个数组的交集
19 0
|
3月前
|
Go
Golang语言之数组(array)快速入门篇
这篇文章是关于Go语言中数组的详细教程,包括数组的定义、遍历、注意事项、多维数组的使用以及相关练习题。
43 5