Python双指针+循环【Dream的刷题乐园⚡】❤️LeetCode每日游园系列❤️——18.四数之和
📢📢📢📣📣📣
🐸Hello,大家好我是Dream,欢迎大家来到刷题乐园😜😜😜🐹
游园须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀
🐹
导游主要使用Python语言,同时欢迎其他语言的小伙伴进来玩耍
☀️☀️☀️
🐹游园过程中,如果发现有错误的话,欢迎大家评论区及时斧正❤️❤️❤️
🐹
最后,祝大家游园愉快,一起加油进步🍺🍺🍺
💦乐园描述
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] :
0 <= a, b, c, d < n
a、b、c 和 d 互不相同
nums[a] + nums[b] + nums[c] + nums[d] == target
你可以按 任意顺序 返回答案 。
示例 1:
输入:nums = [1,0,-1,0,-2,2], target = 0
输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]
示例 2:
输入:nums = [2,2,2,2,2], target = 8
输出:[[2,2,2,2]]
提示:
1 <= nums.length <= 200
-109 <= nums[i] <= 109
-109 <= target <= 109
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
💦游园准备
如果之前做过 两数之和 , 三数之和 , 那么,这道题就是无脑多嵌套一层for循环了…
双层for循环判断num1和num2,然后使用双指针执行while循环,直到left == right截止。
💦开始游玩
# -*-coding:utf-8 -*-
# @Author:到点了,心疼徐哥哥
# 奥利给干!!!
class Solution():
def foursum(self,nums,target):
length = len(nums)
ret=[]
if not nums or length<4:
return ret
nums.sort()
for i in range(length-3):
num1 = nums[i]
for j in range(i+1,length-2):
num2 = nums[j]
left =j+1
right = length-1
while left<right:
total = num1+num2+nums[left]+nums[right]
if total == target:
zhongjian = [num1,num2,nums[left],nums[right]]
if zhongjian not in ret:
ret.append(zhongjian)
right = right-1
elif total < target:
left += 1
else:
right=right-1
return ret
s=Solution()
print(s.foursum(nums = [1,0,-1,0,-2,2], target = 0))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
💦游玩总结
The stage extends as far as the heart goes~加油!❤️❤️❤️
**🏅今天是我打卡的第二十一天,希望每天都能见到最棒的你🏅**
📢📢📢最后的福利
☀️☀️☀️最后一点小福利带给大家:如果想快速上手python的小伙伴们,这个详细整理PPT可以迅速帮助大家打牢python基础,需要的小伙伴们可以下载一下 Python入门基础教程全套+小白速成+学不会来找我! 🍻🍻🍻
还有自制表白神器,需要自取:
Python表白神器,源码+解析+各种完美配置+浪漫新颖 🍻🍻🍻
🌲🌲🌲 好啦,这就是今天要分享给大家的全部内容了
❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了~
文章来源: xuyipeng.blog.csdn.net,作者:是Dream呀,版权归原作者所有,如需转载,请联系作者。
原文链接:xuyipeng.blog.csdn.net/article/details/120710139
- 点赞
- 收藏
- 关注作者
评论(0)