首页 > 其他分享 >LeetCode 18. 四数之和

LeetCode 18. 四数之和

时间:2023-05-07 21:13:27浏览次数:45  
标签:四数 nums int 18 && res LeetCode

题目链接:LeetCode 18. 四数之和

题意:

本题思路与LeetCode 15. 三数之和思路完全一样,只是多加了一层for循环

解题思路:

完整代码如下:


func fourSum(nums []int, target int) [][]int {
    // 四元组,四个元素都不相同 ,并且结果要去重

    var res [][]int
    sort.Ints(nums)
    // a < b  < c < d
    for a:=0;a<len(nums);a++{
        if a > 0 && nums[a] == nums[a-1]{
            continue
        }
        for b:=a+1 ;b < len(nums);b++{
            if b > a+1 && nums[b] == nums[b-1]{
                continue
            }
            for c,d:= b + 1,len(nums)-1;c < d; c++{

                if c > b+1 && nums[c] == nums[c-1]{
                    continue
                }
                
                for c < d-1 && nums[a] + nums[b] + nums[c] + nums[d-1] >= target{
                    d--
                }
                if nums[a] + nums[b] + nums[c] + nums[d] == target{
                    res=append(res,[]int{nums[a] , nums[b] , nums[c] , nums[d]})
                }

            }

        }

    }
    return res

}

标签:四数,nums,int,18,&&,res,LeetCode
From: https://www.cnblogs.com/lxing-go/p/17380145.html

相关文章

  • LeetCode 383. 赎金信
    题目链接:LeetCode383.赎金信题意:给你两个字符串:ransomNote和magazine,判断ransomNote能不能由magazine里面的字符构成。解题思路:首先利用map记录magazine中所有出现的字母,key是单个字母,value是该字母出现的次数,然后遍历ransomNote,检查当前字母在magazine中是......
  • LeetCode 516. 最长回文子序列
    classSolution{public:intf[1010][1010];//f[i][j]表示s[i~j]之间的最长序列intINF=0x3f3f3f3f;intlongestPalindromeSubseq(strings){intn=s.size();s=''+s;for(intlen=1;len<=n;len++)for(inti=1;i......
  • LeetCode 202. 快乐数
    题目链接:LeetCode202.快乐数题意:本题是让我们判断一个数是否是快乐数,题干中给出了快乐数的条件。解题思路:方法一:在题干中指出,如果一个数不是快乐数的话,那么它的各个位上的数字的平方和会无限循环,始终变不到1,也就是说求和的过程中,sum会重复出现,因此我们抓住这一关键特征,判......
  • LeetCode 349. 两个数组的交集
    题目链接:LeetCode349.两个数组的交集题意:本题题意是让我们找出两个数组中的交集,注意交集中不能出现重复元素解题思路:思路比较常规,先遍历数组num1,对于每个首次出现的数字,对应位置上的数值+1,再遍历数组num2,判断当前数字是否在num1中出现,如果出现,就加入到结果集中完整代码如......
  • LeetCode 242. 有效的字母异位词
    题目链接:LeetCode242.有效的字母异位词题意:本题是要判断两个字符串s和t,是否是字母异位词,所谓字母异位次就是如果s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。解题思路:首先我们很容易想到,最简单的思路就是先遍历一遍s字符串,统计出每个字母出现的次数......
  • Leetcode11~20题整理
    11.盛最多水的容器比较暴力的做法:classSolution{public:intmaxArea(vector<int>&h){vector<int>t;intn=h.size();intres=-1;for(inti=0;i<n;i++){for(intj=0;j<(int)t.size(......
  • poj018(2)
    再贴一版poj1018,其实与之前的那一版差不多,只是去掉了注释,这样可能看起来会舒服一点packagecom.njupt.acm;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.util.Arrays;importjava.util.Scanner;publicclassTestPOJ1018{pu......
  • poj1018(1)
    其实这道题我也没有完全的弄明白,糊里糊涂就ac了 大致题意:某公司要建立一套通信系统,该通信系统需要n种设备,而每种设备分别可以有m1、m2、m3、...、mn个厂家提供生产,而每个厂家生产的同种设备都会存在两个方面的差别:带宽bandwidths和价格prices。现在每种设备都各需要1个,考虑......
  • LeetCode 134.加油站
    1.题目:在一条环路上有n 个加油站,其中第i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组gas和cost,如果你可以绕环路行驶一周,则返回......
  • CF1829B 题解
    题目思路先定义变量\(t,ans\)。循环从\(0\)到\(n-1\),对于第\(i\)个数,如果为\(0\),\(t=t+1\),否则将\(t\)清零。每次循环\(ans=\max(ans,t)\)表示最多有多少个连续的\(0\)。最后输出\(ans\)即可。核心代码点击查看代码voidsolve(){intn=read(),a[1005],a......