首页 > 其他 > 详细

leetcode 关于重复问题

时间:2021-02-05 15:14:08      阅读:18      评论:0      收藏:0      [点我收藏+]

数组重复元素之类问题的整理

lt26 删除排序数组重复项

主要是原地删除,O(1) 空间,很是巧妙

func removeDuplicates(nums []int) int {
	//O(1)空间复杂
	if len(nums)==0{
		return 0
	}
	tmp:=0
	//不同,tmp+1,放在相应位置
	for i:=1;i<len(nums);i++{
		if nums[tmp]!=nums[i]{
			tmp++
			nums[tmp]=nums[i]
		}
	}
	return tmp+1 //返回tmp+1 因为系统测评是最大下标在tmp
}

lt80 删除排序数组II

最多重复两次,空间O(1)


lt83 删除排序链表重复元素I

和排序数组类似,重复数字只保留一个

func deleteDuplicates(head *ListNode) *ListNode {
	if head==nil||head.Next==nil{
		return head
	}
	cur:=head
	next:=head.Next

	for next!=nil{
		if cur.Val!=next.Val{
			cur.Next = next
			cur = cur.Next
		}
		next = next.Next
	}
	cur.Next = nil
	return head
}
lt82 删除链表重复元素II

删除所有的重复元素


lt217 存在重复元素I

判断是否存在重复元素
map一边判断一边加

func containsDuplicate(nums []int) bool {
	//map即可
	hash:=make(map[int]int)
	for i:=0;i<len(nums);i++{
		if _,ok:=hash[nums[i]];ok{
			return true
		}
		hash[nums[i]]=1
	}
	return false
}

leetcode 关于重复问题

原文:https://www.cnblogs.com/9527s/p/14377157.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!