leetcode02——删除、“数” 重复元素
0.本节学到的知识——重复元素的删除
我的想法:remove是删除匹配到的第一个元素,那就for从头到尾循环,然后逐个删除就好啦!
想法存在的问题:如果你是从前往后(for i in range(0,len(nums)))循环查找删除,那么一定会报错,为什么?因为这种做法可能会导致某些元素没有被比较,比如说第一个匹配要删除的是 nums[2],我们的本意是继续nums[3]再比较,但是删除nums[2]后,元nums[3]的元素就会到2的位置,但是你i此时不为2,因为进行了i++,所以原来nums[3]这个元素就相当于没有被比较查找,这种混乱就会让系统报错。
怎么办呢?——从后往前删除
从前向后的失败在于删除操作 影响了后面未操作的数据,而从后向前遍历,删除某个元素后,后面的元素虽然向前挪动,但是我未操作的数据在前面,影响的仅仅是我操作过的数据,它不会影响未操作的数据,因此该方法可行。
for i in range(len(nums)-1,0,-1): if nums[i]==nums[i-1]: nums.pop(i) #或者nums.remove(nums[i]) """一定要注意for括号里的条件,因为他是左闭右开,并且出现了nums[i-1],因此起始是len-1,末尾是0,(末尾是0就是i只能到1,所以i-1=0不会出现超纲)"""
如果就是单纯的让你删除某列表中与k相同的所有元素,那直接while即可:
while k in nums: nums.remove(k)
题目1:删除 与指定value相等 的所有元素
题目:
答案:
题目2:删除重复元素
题目:
答案:
题目3:删除重复元素进阶版——每个重复的元素保存两次
题目:
答案:
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
1.本节学到的知识—— 对于重复元素确定数量、数量比较,怎么操作
比如说一个列表的许多元素是重复的,想让你找到重复次数超过k次的元素,
怎么办?——排序!
排完序后遍历,看nums[i]?=nums[i+k-1] #i到i+k-1是k个数!本身算一个!
这个方法有点巧妙,但是一定要注意这个个数、序号+1-1的问题,实在不行就去试试!
题目:查找多数元素
题目:
答案
还有就是:那个是 list1.sort() ; list1=sorted(list1,...)
原文地址:https://blog.csdn.net/weixin_59924168/article/details/143832736
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!