【LeetCode】数组题目III【Python】

本文深入解析了四数之和问题的解决方案,通过固定头尾双指针法实现,同时探讨了如何在列表中移除指定元素的有效方法。代码清晰,易于理解,为读者提供了算法实现的具体思路。

class Solution(object):
    """类似3sum,固定头尾,进行循环,应该有更优方法,但是通过勒,代码也很好理解"""
    """去重代码此处先判断是否存在此列表,在进行添加。另一种跳过重复,不能简单使用两个while"""
    def fourSum(self, nums, target):
        ans=[]
        nums.sort()
        for i in range(len(nums)-3):
            for right in range(len(nums)-1,i+2,-1):
                mid = right - 1
                left = i + 1
                while left<mid:
                    sum = nums[left]+nums[mid]+nums[right]+nums[i]
                    if sum==target:
                        result=[]
                        result.extend([nums[i],nums[left],nums[mid],nums[right]])
                        if result not in ans:
                            ans.append(result)
                        mid -= 1
                        left += 1
                        # while left<mid and nums[left]==nums[left-1]:
                        #     left+=1
                        # while left<mid and nums[mid]==nums[mid+1]:
                        #     mid-=1
                    elif sum<target:
                        left+=1
                    else:
                        mid-=1
        return ans
a=Solution()
nums=[5,5,3,5,1,-5,1,-2]
print(a.fourSum(nums,4))

class Solution(object):
    """
    思路:增加一个索引。!=val则进行复制,否则跳过。
    此处不用思考nums长度问题,保证前index个不存在val值即可
    """
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        index=0
        print(len(nums))
        for i in range(len(nums)):
            if nums[i]!=val:
                nums[index]=nums[i]
                index+=1
        return index

a=Solution()
nums=[0,1,2,2,3,0,4,2]
print(a.removeElement(nums,2))

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值