python有指针概念吗,python有指针
给定一个包含n个整数的数组nums,判断nums中是否有a,b,c三个元素,使得a b c=0?请找出所有符合条件的三元组,不要重复。注意:答案不能包含重复的三元组。
想法:
1.将列表从小到大排序。
2.三个指针I,k,j,I放在最外面(每个循环的第一个,用来计算nums[i] nums[k] nums[j]的值是否为0)。k是每个循环中I之后的一个。j是每个周期的最后一个。
3.每次都计算s=nums[i] nums[k] nums[j]。如果s==0,则追加到列表中;如果s0,k指针向右移动,一直移动到不等于上一个的那个(减少重复,提高效率);如果s0,J指针向左移动,一直移动到def three sum(nums):savelst=[]nums . sort()for I in range(len(nums)):#第一个数必须小于等于0,如果三个数之和大于零,则不能等于0 if (i==0或nums[i]!=nums [I-1])和(Nums[I]=0):k=I1J=len(Nums)-1 # ikj都是下标而kj:if Nums[I]==nums [k]==Nums[j]==0:savelst . append . 0])break s=Nums[I]Nums[k]Nums[j]if s==0:savelst . append([Nums[I],Nums[k],Nums [j]]) k=1==nums[j 1]:j-=1 else:k=1 whilen ms[k]==nums[k-1]and(K1len(nums)-1):k=1 return savelsprint(three sum([-4,-2,1,-5,)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。