力扣练习DAY4——三数之和、链表相交

一、三数之和 

class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        n=len(nums)
        nums.sort()
        anwser=list()
        #找第一个指针a—需要满足的条件:小于0且不重复
        for a in range(n):
            #需要和上一次枚举不同a
            if a>0 and nums[a]==nums[a-1]:
                continue
            c = n-1
            targat=-nums[a]
            #开始找b—需要满足的条件:在c的左边且不重复
            for b in range(a+1,n):
                #需要和上一次枚举不同b
                if b>a+1 and nums[b]==nums[b-1]:
                    continue
                while b<c and nums[b]+nums[c]>targat:
                    c-=1
                if b==c:#保证b一定在c的左边
                    break
                if nums[b]+nums[c]==targat:
                    anwser.append([nums[a],nums[b],nums[c]])
        return anwser

 

1.continue在if中的应用:

num=[1,2,3,4]
for i in range(len(num)):
	if i%2==0:
		continue
	print(i)
#如果满足if条件,那就直接进行下一次的循环,不需要进行循环体内之后的语句

2.列表添加方法append:

a=list()
a.append(1)
print(a)

可以添加任意类型(字符,整数,列表,元组....);每次只能添加一个对象

3.从一个列表中选取不重复的子序列:先排序,再根据排序选取,可以减少重复次数;且每一次循环相邻两个元素也不能重复

二、链表相交

法一:哈希集合——用于储存非重复值;

unordered_set<Type> hashset;

查找键是否存在于哈希集中hashset.count(key),找到返回1,否则返回0  

哈希映射——用于储存键值对(key,value)

unordered_map<Type,Type> hashmap;

查找键是否存在于哈希映射中hashmap.count(key),找到返回1,否则返回0

查找键对应的键值并返回hashmap.fine(key),找到返回value,否则返回map.end()

法二:双指针

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值