一、前记(1/3)

最近感觉特别地懈怠,大概丧了有两三天,书没有认真的读,题也没有认真的写。好在今天有及时的调整心态认真写题,要不然得继续丧下去。

二、题目描述

u1s1,这个题目还是比较地好玩,这道题和上一道题也是有相似的地方。除了不能使用set()函数之外,其他地方我觉得思路都差不多,尤其是使用链表的这种方法。

三、解题思路

(1)我的思路

就是在nums里面,从左到右以此查找符合val的值,如果符合val的值,那么就删除。

#encoding:utf-8
class Solution(object):
    def removeElement(self, nums, val: int) -> int:
        i=0
        while i<len(nums):
            if nums[i]==val:
                nums.remove(nums[i])
            else:
                i=i+1
        print(nums)
        return len(nums)

#as a checking
solution=Solution()
a=[3,2,2,3]
val=3
print(solution.removeElement(a,val))

(2)别人的思路

u1s1,有关于链表的思路都是大同小异。但是我在网上看到了一个非常有意思的解法:他没有使用链表的思路,而是直接取巧,借用remove函数,外加上一个python3异常处理的try/except进行了一个组合。直接短小精悍。

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        try:
            while True:
                nums.remove(val)
        except:
            return len(nums)

四、学到了什么?

(1)利用remove可以删除掉列表里面指定的值:remove(obj)

(2)异常处理的格式: