首页 > 学院 > 开发设计 > 正文

Remove Element

2019-11-06 08:31:57
字体:
来源:转载
供稿:网友

leetcode第27题,要求在一个数组中删除指定元素,而且要求是原地操作,不允许使用额外数组。

其实这个题目很明显使用双指针法,题目中hint还有一条是如果删除元素很稀少如何提高效率,我的思路是一头一尾进行遍历,头结点观察是否是指定删除的元素,如果是就要和把它放到末尾。这里分三种情况,一种是头指针为删除元素,尾指针为其余元素,则直接交换。如果头指针和尾指针都是要删除的元素,则要尾指针继续左移。其余情况下,头指针右移。

class Solution(object): def removeElement(self, nums, val): """ :type nums: List[int] :type val: int :rtype: int """ def swap(nums, i1, i2): tmp = nums[i1] nums[i1] = nums[i2] nums[i2] = tmp n = len(nums) start = 0 end = n-1 while start <= end: if nums[start] == val and nums[end] != val: swap(nums,start, end) start += 1 end -= 1 elif nums[start] == val and nums[end] == val: end -= 1 else: start += 1 return start
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表