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

vs2010 网站开发教程阿里企业邮箱电话

vs2010 网站开发教程,阿里企业邮箱电话,如何找外包网站来做,市区网站建设情况题目 给定一个包含 n 个整数的数组 nums 和一个目标值 target#xff0c;判断 nums 中是否存在四个元素 a#xff0c;b#xff0c;c 和 d #xff0c;使得 a b c d 的值与 target 相等#xff1f;找出所有满足条件且不重复的四元组。 注意#xff1a;答案中不可以包…题目 给定一个包含 n 个整数的数组 nums 和一个目标值 target判断 nums 中是否存在四个元素 abc 和 d 使得 a b c d 的值与 target 相等找出所有满足条件且不重复的四元组。 注意答案中不可以包含重复的四元组。 示例 给定数组 nums [1, 0, -1, 0, -2, 2]和 target 0。 满足要求的四元组集合为 [ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2] ] 思路  四数之和和代码随想录阅读笔记-哈希表【三数之和】-CSDN博客是一个思路都是使用双指针法, 基本解法就是在代码随想录阅读笔记-哈希表【三数之和】-CSDN博客的基础上再套一层for循环。但是有一些细节需要注意例如 不要判断nums[k] target 就返回了三数之和 可以通过 nums[i] 0 就返回了因为 0 已经是确定的数了四数之和这道题目 target是任意值。比如数组是[-4, -3, -2, -1]target是-10不能因为-4 -10而跳过。但是我们依旧可以去做剪枝逻辑变成nums[i] target (nums[i] 0 || target 0)就可以了。 代码随想录阅读笔记-哈希表【三数之和】-CSDN博客的双指针解法是一层for循环num[i]为确定值然后循环内有left和right下标作为双指针找到nums[i] nums[left] nums[right] 0。 四数之和的双指针解法是两层for循环nums[k] nums[i]为确定值依然是循环内有left和right下标作为双指针找出nums[k] nums[i] nums[left] nums[right] target的情况三数之和的时间复杂度是O(n^2)四数之和的时间复杂度是O(n^3) 。那么一样的道理五数之和、六数之和等等都采用这种解法。 对于代码随想录阅读笔记-哈希表【三数之和】-CSDN博客双指针法就是将原本暴力O(n^3)的解法降为O(n^2)的解法四数之和的双指针解法就是将原本暴力O(n^4)的解法降为O(n^3)的解法。 之前博客的经典题目代码随想录阅读笔记-哈希表【四数相加II】-CSDN博客相对于本题简单很多因为本题是要求在一个集合中找出四个数相加等于target同时四元组不能重复。而​​​​​​​代码随想录阅读笔记-哈希表【四数相加II】-CSDN博客是四个独立的数组只要找到A[i] B[j] C[k] D[l] 0就可以不用考虑有重复的四个元素相加等于0的情况所以相对于本题还是简单了不少。 我们来回顾一下几道题目使用了双指针法。 双指针法将时间复杂度O(n^2)的解法优化为 O(n)的解法。也就是降一个数量级除了本题还有之前写过的题目如下 代码随想录阅读笔记-数组【移除元素】-CSDN博客代码随想录阅读笔记-哈希表【三数之和】-CSDN博客 链表相关双指针题目 代码随想录阅读笔记-链表【反转链表】-CSDN博客代码随想录阅读笔记-链表【删除链表倒数第n节点】-CSDN博客代码随想录阅读笔记-链表【链表相交】-CSDN博客代码随想录阅读笔记-链表【环形链表II】-CSDN博客 双指针法在字符串题目中还有很多应用后面还会介绍到。 C代码 class Solution { public:vectorvectorint fourSum(vectorint nums, int target) {vectorvectorint result;sort(nums.begin(), nums.end());for (int k 0; k nums.size(); k) {// 剪枝处理if (nums[k] target nums[k] 0) {break; // 这里使用break统一通过最后的return返回}// 对nums[k]去重if (k 0 nums[k] nums[k - 1]) {continue;}for (int i k 1; i nums.size(); i) {// 2级剪枝处理if (nums[k] nums[i] target nums[k] nums[i] 0) {break;}// 对nums[i]去重if (i k 1 nums[i] nums[i - 1]) {continue;}int left i 1;int right nums.size() - 1;while (right left) {// nums[k] nums[i] nums[left] nums[right] target 会溢出if ((long) nums[k] nums[i] nums[left] nums[right] target) {right--;// nums[k] nums[i] nums[left] nums[right] target 会溢出} else if ((long) nums[k] nums[i] nums[left] nums[right] target) {left;} else {result.push_back(vectorint{nums[k], nums[i], nums[left], nums[right]});// 对nums[left]和nums[right]去重while (right left nums[right] nums[right - 1]) right--;while (right left nums[left] nums[left 1]) left;// 找到答案时双指针同时收缩right--;left;}}}}return result;} }; 时间复杂度: O(n^3)空间复杂度: O(1) 优化二级剪枝的部分 if (nums[k] nums[i] target nums[k] nums[i] 0) {break; }可以优化为 if (nums[k] nums[i] target nums[i] 0) {break; }因为只要 nums[k] nums[i] target那么想要符合题意的唯一条件就是此时nums[k] 和 nums[i]都为负数所以需要nums[i]后面还有负数才能使和变小进而去接近target那么 nums[i] 后面的数都是正数的话就一定 不符合条件了。
http://www.dnsts.com.cn/news/131792.html

相关文章:

  • 网站改版后 存在大量404页面网站制作公司哪家正规
  • 网站解析出问题 邮件收不到了苍山网站建设
  • 亦庄开发区建设局网站站长工具精品
  • 网站建好后广告是不是需要承德 网站建设
  • 网站网站做任务佣金违法网页维护师
  • 高要网站建设公司广州车陂网站建设公司
  • 河北省城乡和建设厅网站wordpress中文字体
  • 视频网站的防盗链是怎么做的免费制作企业网站平台
  • 建设一个购物网站要多少钱安阳昨天发生的事件
  • 网站注册了域名然后怎么做音乐网站开发可行性分析
  • 定西市网站建设咨询滁州网站建设价格
  • 用wordpress做app网站外链优化
  • 哈尔滨cms模板建站如何提高网站的安全性
  • 网站开发 英语视频网站建设价位
  • 网站建设的可行性北京企业网站制作哪家好
  • 福永网站建设大型购物网站开发
  • 哪些网站用vue.js做的建设网站的相关费用
  • 做哪类英文网站赚钱货源网
  • 阳山做网站北京有哪些不错的互联网公司
  • 怎样给网站做推广竞价推广专员
  • 代理ip做网站流量山西省住房与城乡建设部网站
  • 制作商务网站wordpress上传中文图片不显示
  • 西安自助建站全景720效果图是什么软件
  • 网站后台怎么控制wordpress zip
  • 妇产医院网站源码wordpress媒体库太大
  • 扫二维码直接进网站怎么做如何自建网站 优帮云
  • dwcc2017怎么做网站山西微网站建设
  • 网站制作方案设计内蒙古建设工程社保中心网站
  • 如何自主建设企业网站手机seo关键词优化
  • 网站布局怎么写注册wordpress博客