当前位置: 首页 > wzjs >正文

鄂伦春网站建设个人网站免费源码大全

鄂伦春网站建设,个人网站免费源码大全,玄武网站制作收费报价,宣传品牌网站建设题目描述 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复): …

题目描述

给你一个由 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[i],作为四元组的第一个元素。(我们应该避免重复处理值相同的元素为四元组的第一个元素,因此,当nums[i]与nums[i-1]相等时,应该跳过。
  2. 使用双指针来查找两个数之和为 target - nums[i] - nums[j],其中 j 是第二层循环的指针。
  3. 如果当前的两个数和小于目标值,则移动左指针增大和;如果和大于目标值,则移动右指针减小和。

代码

class Solution:def fourSum(self, nums: List[int], target: int) -> List[List[int]]:nums.sort() results = []for i in range(len(nums) - 3):# if nums[i] > target:#     break;# 跳过重复的元素if i > 0 and nums[i] == nums[i-1]:continuefor j in range(i+1, len(nums) - 2):# 跳过重复的元素if j > i + 1 and nums[j] == nums[j - 1]:continue# 双指针left, right = j + 1, len(nums) - 1while left < right:four_sum = nums[i] + nums[j] + nums[left] + nums[right]if four_sum == target:results.append([nums[i], nums[j], nums[left], nums[right]])# 可以放大nums[left]同时缩小nums[right]继续找,但应该先避免重复while left < right and nums[left] == nums[left+1]:left += 1while left < right and nums[right] == nums[right-1]:right -= 1# 移动指针,放大nums[left]同时缩小nums[right]left += 1right -= 1elif four_sum < target:left += 1else:right -= 1return results

之前的三数之和题目,target固定为0;且由于数组是升序排列的,当 nums[i] 大于 target(即大于 0)时,必然无法找到满足条件的三元组,因此可以提前退出外层循环。
但在本题中,当 target 为负数时,即使 nums[i](作为四元组的最小值)大于 target,只要后续的数中存在负数,依然有机会构成满足目标值的四元组。
例子:
nums=[1,-2,-5,-4,-3,3,3,5]
target=-11
output:[[-5,-4,-3,1]]
在这种情况下,负数的参与使得和能够小于 target,从而形成有效的解

总结

http://www.dtcms.com/wzjs/807120.html

相关文章:

  • 中国第八冶金建设公司网站音乐网站怎么做精准关键词
  • 廊坊网站建设廊坊网站开发 jz.woonl
  • 温州快速网站推广公司在线设计平台排行榜
  • 重庆做网站找谁名师工作室网站建设 意义
  • 免费建站网站黄金网站增加wordpress阅读量
  • 网站标题是关键词吗如何做农产品网站
  • 百度推广和哪些网站有合作如何增加网站外链
  • 蕴川路上海网站建设关键词调价工具哪个好
  • 搅拌机东莞网站建设技术支持云主机 网站指南
  • php网站建设 关键技术v2ex wordpress
  • 网站模板 html外贸平台营销
  • 怎样做卖活网站企业公章查询系统
  • 手机宣传网站企业网站建设需要费用
  • 郴州网站建设公司在哪里做电力公司网站
  • 什么是网站后台发布新闻稿
  • flash网站cms个人可以做招聘网站吗
  • 咨询邯郸网站建设软件app网站建设
  • 红河做网站的公司wordpress 果壳网
  • 部门将网站建设的需求湛江做网站开发
  • 儿童玩具商城网站建设wordpress array
  • 做自己的网站的好处网页设计常用代码大全
  • 深圳外网站建设烟台网站建设ytwzjs
  • 网站源码建站教程站长之家官网登录入口
  • 免费的企业黄页网站永久免费宁波网站建设选择荣胜网络
  • 建设制作网站网站百度推广怎么做的
  • 哈尔滨门户网站制作哪家好搭建商城网站
  • 烟台开发区网站什么网站做美食最好最专业
  • 网站建设难点做网站能用微软
  • 用dw制作个介绍家乡网站同安建设局网站
  • 一个网站的主题和设计风格慕课网站开发文档