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

如何制作免费的公司网站外链seo软件下载

如何制作免费的公司网站,外链seo软件下载,seo关键词排名优,网页制作常用软件有哪些当然可以!下面是这道题(LeetCode 18: 四数之和)的思路总览模板答案,适用于笔试、面试或者写题解时的标准答题格式👇 🧩 LeetCode 18. 四数之和 —— 思路总览模板答案 ✅ 题目描述简要 给定一个整数数组 …

在这里插入图片描述

当然可以!下面是这道题(LeetCode 18: 四数之和)的思路总览模板答案,适用于笔试、面试或者写题解时的标准答题格式👇


🧩 LeetCode 18. 四数之和 —— 思路总览模板答案

✅ 题目描述简要

给定一个整数数组 nums 和一个目标值 target,找出所有不重复的四元组 [a, b, c, d],使得:

nums[a] + nums[b] + nums[c] + nums[d] == target

要求:

  • 四元组元素的下标不重复
  • 四元组值不能重复(顺序无关)

🔍 解题思路

1. 排序数组

首先将数组 nums 升序排序,便于后续使用双指针,并且方便跳过重复元素。

2. 枚举前两个数 + 双指针找后两个数
  • 固定前两个数 nums[i]nums[j]
  • 在剩余部分使用双指针 leftright,寻找符合条件的另外两个数
3. 跳过重复元素
  • 对于每一层循环(i, j)和每次指针移动(left, right),都要跳过相同的数值,确保不出现重复的四元组
4. 使用 long 防止整型溢出
  • nums[i] + nums[j] + nums[left] + nums[right] 可能超出 int 范围,因此建议用 long 存储临时和

🧠 算法复杂度

  • 时间复杂度:O(n³)
    三重循环(两层 + 双指针)枚举所有可能组合

  • 空间复杂度:O(1)
    只用了常数级额外空间(不算返回结果)


💡 关键技巧总结

  • 排序数组:便于双指针和去重操作
  • 双指针:利用有序数组快速找到两数之和
  • 去重处理:防止重复答案(i、j、left、right层层去重)
  • long 类型:规避溢出风险

java solution

class Solution {public List<List<Integer>> fourSum(int[] nums, int target) {List<List<Integer>> result = new ArrayList<>();//首先进行排序Arrays.sort(nums);int n = nums.length;for(int i = 0; i < n - 3; i++) { //先确定第一个数if(i > 0 && nums[i] == nums[i - 1]) continue; //进行去重//然后确定第二个数for(int j = i + 1; j < n - 2; j++) {if(j > i + 1 && nums[j] == nums[j - 1]) continue; //去重//此时, 前两个数都确定了,然后开始初始化双指针int left = j + 1, right = n - 1;while(left < right) {//先计算四数之和long sum = (long) nums[i] + nums[j] + nums[left] + nums[right];if(sum == target) {result.add(Arrays.asList(nums[i], nums[j], nums[left], nums[right]));//继续去重while(left < right && nums[left] == nums[left + 1]) left++;while(left < right && nums[right] == nums[right - 1] ) right--;//此时left和right仍然需要移动一位,因为上面的去重只是移动到连续重复的最后一个字符left++;right--;} else if(sum < target){left++;} else {right--;}}}}return result;}
}

当然可以!我们来一步步详细剖析这段 Java 代码的 算法思想和实现细节。目标是解决 LeetCode 第 18 题 —— 四数之和(4Sum)问题:


🧠 题目核心思想

给定一个数组 nums 和一个目标值 target,我们需要找出所有 不重复的四元组 [a, b, c, d],使得:

nums[a] + nums[b] + nums[c] + nums[d] == target

算法核心步骤(排序 + 双指针)

我们用一种 类似“三数之和”(3Sum) 的方式来解决这个问题,只不过是套两层循环 + 双指针。


🧩 代码讲解

public List<List<Integer>> fourSum(int[] nums, int target) {

我们定义一个返回值为 List 的函数,返回所有不重复的四元组。


    List<List<Integer>> result = new ArrayList<>();Arrays.sort(nums); // 排序,方便后面双指针处理和去重

对数组进行排序是关键,排序后我们就可以利用双指针进行查找,同时能方便地跳过重复值。


    int n = nums.length;for (int i = 0; i < n - 3; i++) {if (i > 0 && nums[i] == nums[i - 1]) continue; // 去重

第一层循环,选第一个数 nums[i]。去重防止同样的开头重复出现。


        for (int j = i + 1; j < n - 2; j++) {if (j > i + 1 && nums[j] == nums[j - 1]) continue; // 去重

第二层循环,选第二个数 nums[j],同样做去重。


            int left = j + 1, right = n - 1;

这时候,问题变成了:在 nums[j+1] ~ nums[n-1] 中找两个数,使得四个数的和等于 target。这正是双指针的用武之地。


            while (left < right) {long sum = (long) nums[i] + nums[j] + nums[left] + nums[right];

这里我们用了 long 来存储和,是为了避免大整数相加时溢出。


                if (sum == target) {result.add(Arrays.asList(nums[i], nums[j], nums[left], nums[right]));

如果找到满足条件的四元组,加入结果集。


                    while (left < right && nums[left] == nums[left + 1]) left++; // 去重while (left < right && nums[right] == nums[right - 1]) right--; // 去重left++;right--;

找到一个解后,我们继续往下找新的解,但要跳过相同的值(防止重复解)。


                } else if (sum < target) {left++; // 和太小,左边往右移动} else {right--; // 和太大,右边往左移动}

如果当前和小于目标值,我们就让左指针右移,反之则右指针左移。


最终返回结果

    return result;
}

📈 时间复杂度分析

  • 外层两层循环:O(n^2)
  • 内层双指针扫描:O(n)
  • 所以总时间复杂度是:O(n^3),比暴力穷举 O(n^4) 快了很多。

🧹 去重机制详解

  • 第1个数 i 和第2个数 j:如果跟前一个一样,就跳过
  • 第3和第4个数:用 while 跳过重复值(排序保证相同值相邻)

🛡️ 为何使用 long 来存和?

避免整型溢出!比如 Integer.MAX_VALUE + Integer.MAX_VALUE 就会出错,所以强转为 long 保险。


文章转载自:

http://r8T7O2z4.rhjsx.cn
http://cAGQSEam.rhjsx.cn
http://6LdKreDz.rhjsx.cn
http://DxsCXxin.rhjsx.cn
http://tiTiCQN8.rhjsx.cn
http://l00p8VCJ.rhjsx.cn
http://gVhGZxax.rhjsx.cn
http://slqrFwOX.rhjsx.cn
http://ANyJn03x.rhjsx.cn
http://rPS8Gjdu.rhjsx.cn
http://V4FxZ9u2.rhjsx.cn
http://BheX4aEa.rhjsx.cn
http://2s3V1U8s.rhjsx.cn
http://BCOUtwc4.rhjsx.cn
http://7EJ8Gwrr.rhjsx.cn
http://A3cMZlcG.rhjsx.cn
http://wLOOQFBP.rhjsx.cn
http://itVEybpW.rhjsx.cn
http://Aos8m2C4.rhjsx.cn
http://NgniRraV.rhjsx.cn
http://Gz7OOwVp.rhjsx.cn
http://0Z4u22oT.rhjsx.cn
http://PBwAg8Eb.rhjsx.cn
http://VcW79M7N.rhjsx.cn
http://4NVhAgm2.rhjsx.cn
http://msZydj9C.rhjsx.cn
http://jB5RdNty.rhjsx.cn
http://zkOmMjXV.rhjsx.cn
http://WBU92h6Y.rhjsx.cn
http://VcDX8eWA.rhjsx.cn
http://www.dtcms.com/wzjs/762123.html

相关文章:

  • 武安网站制作网站开发 自定义首页显示
  • 常见的网站推广方法哪个公司网站备案快
  • 做数据库与网站招什么人nginx 网站正在建设中
  • 商业空间设计案例网站曲阜网站建设公司
  • 临沂网站公司哪家好做马来西亚生意的网站
  • 中小学校园网站开发技术滴滴一年亏损109亿
  • 南京做网站南京乐识专业门户网站是用户上网的第一入口
  • 公司外贸网站怎么做全网vip影视网站一键搭建
  • 自已做的网站怎么做域名解析引进韩国电影
  • 重庆永川网站建设报价如何制作自己想要的图片
  • 网站策划书如何做网站建设设计简介
  • 腾讯企点怎么群发消息济南网站建设和优化
  • 建设品牌网站公司网站文章页图片大全
  • 哪家手表网站HTML网站页面建设
  • 自己怎么建个优惠网站苏州建设工程信息网
  • 万户网站做网站一年费用
  • CMS网站建设优势静态网页怎么做网站
  • 在线精品课程网站开发做国内网站阿里云怎么样
  • 网站开发外包售后维护合同广州品牌营销服务
  • 网站建设dujujiangxin如何做菠菜网站代理
  • 福建泉州做网站公司特步的网站建设策划
  • 长沙模板建网站需要多久wordpress多个下载地址
  • 网站怎么做直播功能吗网络建设文章网站
  • 网站推广的方法及特点网站建设咨询服务合同
  • 杭州做商务网站网站以前在百度能搜索不到
  • 学校要建个网站应该怎么做网站改版目的
  • 杭州网站免费制作企业网站规划原则
  • 大连做网站不错的公司试玩平台网站开发
  • 直播网站开发天猫网上购物商城
  • 淮安开发区建设局网站jsp网站怎么做