首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏M不作声

    之和与三之和

    之和 ❝输入一个递增排序的数组和一个数字s,在数组中查找个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 ❞ 「对撞双指针」 在数组的左右各有一个指针,向中间遍历。 指针指向的和为s,则s=nums[i]+nums[j],判断s和target的大小: s>target,则右指针向左移,j=j-1 s<target,则左指针向右移,j=j+1 s=target,返回 空间复杂度上来看,使用Map会额外创建O(n)的空间;双指针法创建个指针,空间复杂度为O(2n)。 三之和 ❝有一个整数数组 nums,判断 nums 中是否存在三个元素 a,b,c 的和为0,找出所有符合条件且不重复的三元组。 之和,我们使用了双指针法,将O(n2)的时间复杂度降低到了O(n),在这个问题里,我们可以使用遍历+双指针,将原本O(n3)的时间复杂度降低到O(n2)。

    63230发布于 2021-01-07
  • 来自专栏Jasper小笔记

    之和

    01 题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 个整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。 但是,数组中同一个元素不能使用遍。 7, 11, 15], target = 9 输出:[0, 1] 因为 nums[0] + nums[1] = 2 + 7 = 9 02 暴力枚举 这里想必大家很快就能得到思路也就是双指针遍历所有相加判断是否与目标值相等 return new int[]{i, j}; } } } return new int[0]; } 03 Hash表 但实际上按照上面我们去到数组当中找个数相加为目标值的方式也就是在确定

    45330发布于 2021-01-18
  • 来自专栏kyle的专栏

    之和

    题目 难度级别:简单 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。 但是,数组中同一个元素不能使用遍。

    41700发布于 2020-11-29
  • 来自专栏赵俊的Java专栏

    之和

    题意 给一个整数数组,找到个数使得他们的和等于一个给定的 target。 你需要实现的函数 twoSum 需要返回这个数的下标, 并且第一个下标小于第二个下标。 思路 可以用一个 Map 集合,遍历数组,先记录下当前与目标的差值与角标,然后寻找与这个差值相同的,找到后,将这个数的角标加 1 后返回即可。 numbers[i], i); } int[] nums = {}; return nums; } } 原题地址 LintCode:之和

    78030发布于 2018-06-04
  • 来自专栏个人技术笔记

    之和

    当新元素进入时,判断map的key中是否已经存在这个key了,如果存在,则将这个key对应的坐标拿出      * 并且把当前数组的坐标也取出来,形成一组对应数据,本例中因为index是从1开始的,故个数据都加上了 public class Solution {     public static void main(String[] args) {         int[] numbers = {3, 2, 4} 当新元素进入时,判断map的key中是否已经存在这个key了,如果存在,则将这个key对应的坐标拿出      * 并且把当前数组的坐标也取出来,形成一组对应数据,本例中因为index是从1开始的,故个数据都加上了

    29430编辑于 2022-10-30
  • 来自专栏用户4456933的专栏

    之和

    之和 给你个 非空 的链表,表示个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这个数都不会以 0 开头。 示例 1: ? 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807. :[8,9,9,9,0,0,0,1] 提示: 每个链表中的节点数在范围 [1, 100] 内 0 <= Node.val <= 9 题目数据保证列表表示的数字不含前导零 思路: 首先取出“+”左右个数的最低位 ; 其次求出他们的和并作为输出结果的最低位; 考虑优化:我们都知道的第一点是加法运算是有进位的,所以使用 carry 来保存进位的结果; 临界值判断:当个链表长度不一样的时候,总会有 有值 和 null

    58140发布于 2021-06-01
  • 来自专栏面试经验贴

    之和

    一 题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。 ,然后呢这个个数之和需要等于目标的值。 ok,我的外层循环从第一个开始遍历,内层循环从第二个遍历,如果这个数和等于目标值,我就返回下标,问题来了,我要返回下标,所以需要先暂存起来才方便,而且返回的类型也需要确定。 return res; } hash_map[nums[i]] = i; } return res; } }; 4 至此,咱们想想如何解决三之和的问题呢? 5 结尾 希望读者和咱一起一步一个脚印去把基础知识打牢固。

    54320发布于 2020-06-05
  • 来自专栏计算机视觉理论及其实现

    之和

    给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。 示例 2: 输入:nums = [3,2,4], target = 6 输出:[1,2] 示例 3: 输入:nums = [3,3], target = 6 输出:[0,1] 提示: 2 <= nums.length

    30840编辑于 2023-11-03
  • 来自专栏青益云记

    「  之和  」

    给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。

    28210编辑于 2023-01-03
  • 来自专栏C语言基础

    之和 ? 三之和? 四之和? 统统搞定

    ) 题目描述 示例 (2)解题思路 (3)代码展示: 二、三之和 (1) 题目描述 示例 (2)解题思路 (3)代码展示: 三、四之和 (1) 题目描述 示例: (2)解题思路 (3)代码展示: 一 (2)解题思路 为了让我们更好的寻找,排序是有利于提高我们的查找效率的。 要找到3个的和为0,我们只需要固定一个(end),然后找到个数的和为-end即可。 4 .看到这里,应该不难知道,如何寻找寻找个数的和为-end ,这不就是第一道题的要求吗? 如果left>right,表明end为前面的所有可能都已经统计过了,end往前移动一步,继续2、3步骤。 while (end - 1 > 0 && nums[end] == nums[end + 1]) end--; } return vv1; } }; 三、四之和 如果直接写第四题,我们可能无法下手,但是有了前个的铺垫,现在写应该不算太困难了。 秘诀: 四之和转化为三之和。 三之和转化为之和

    28110编辑于 2024-01-07
  • 来自专栏指点的专栏

    leetcode 之和、三之和、最接近的三之和、四之和

    之和 题目链接:之和 给定一个整数数组和一个目标值,找出数组中和为目标值的个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 (循环范围 0~size-3)先确定一个,之后设立双指针头尾同时扫描数组右边剩下的,如果找到个数和为外层循环中以确定的相反,那么存入解,并且去除 start 和 end 重复。 之后双指针扫描数组右边剩下的,找到个和为已确定数的相反个数 for (int i = 0; i < size - 2; i++) { start = i 题目链接: 最接近的三之和 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。 返回这三个的和。假定每组输入只存在唯一答案。 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.

    2.9K31发布于 2019-01-18
  • 来自专栏全栈程序员必看

    之和之积

    已知个1~30之间的数字,甲知道之和,乙知道之积。 甲问乙:”你知道是哪个数吗?”乙说:”不知道”; 乙问甲:”你知道是哪个数吗?” 甲知道之和 A=x+y; 乙知道之积 B=x*y; 该题分种情况 : 允许重复, 有(1 <= x <= y <= 30); 不允许重复,有(1 <= x < y <= A=x+y=5 则有双解 x1=1,y1=4; x2=2,y2=3 代入公式B=x*y: B1=x1*y1=1*4=4;(不满足推论1,舍去) B2=x2*y2=2 4 即甲知道答案 与题设条件:”甲不知道答案”相矛盾 故假设不成立,A=x+y≠6 当A>=7时 ∵ x,y的解至少存在种满足推论1的解 B1=x1*y1=2*(A ,y=6当B=8时有唯一解 x=1,y=8 4)由题设条件:甲说”那我也知道了” => 甲通过已知条件A=x+y及推论(3)可以得出唯一解 综上所述,原题所求有组解: x1=1

    63530编辑于 2022-08-31
  • 来自专栏石璞东 | haha

    数据结构与算法 -4、5 :相加&&之和

    全文字数:4024字 全文阅读时间:11分钟 【Leetcode】题目描述(1) 相加[1] 给出个非空的链表用来表示个非负的整数。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 思路提供 OK,我们简单说下思路,题目意思可以简化为:给定个非空链表 carry > 0 ) { cursor.next = { val: carry } } return root.next; }; 来看第二题 【Leetcode】题目描述(2) 之和相加[1]、之和[2]),小伙伴们仅凭这几个字可能觉得这道题目是不是重复了,相信大家在看完上述题解之后,是不是都明白了呢? 快去实现一下吧~ 参考资料 [1] 【Leetcode】相加: https://leetcode-cn.com/problems/add-two-numbers/ [2] 【Leetcode】之和

    95910发布于 2020-05-22
  • 来自专栏爱敲代码的猫

    之和(TwoSum)

    我工作2年已经感觉到危机感,正准备同时这面临着个问题了,不如蹭现在还有来得及一起去把算法练起来吧,光看可不行得练。 GitHub: https://github.com/aquanlerou/leetcode 之和(TwoSum) 首先我们先看看题目描述: 给定一个整数数组 nums 和一个目标值 target ,请你在该数组中找出和为目标值的那 个 整数,并返回他们的数组下标。 遍历数组相加得出结果 循环中判断是否与目标相等 相等跳出循环,记录数值的位置 不相等继续循环相加 最后把记录的数值return返回 上代码: public int[] twoSum(int[] nums

    1.4K30发布于 2019-12-18
  • 来自专栏Jacob

    【LeetCode】之和

    package leetcode.editor.cn; //给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 个 整数,并返回他们的数组下标。 但是,数组中同一个元素不能使用遍。 Topics 数组 哈希表 import java.util.Arrays; import java.util.HashMap; import java.util.Map; public class 之和 { public static void main(String[] args) { Solution solution = new 之和().new Solution(); int[] return new int[]{map.get(temp),i}; } map.put(nums[i],i); } return null; } /** * 方法二:遍哈希表

    40520发布于 2020-08-05
  • 来自专栏祥子的故事

    之和(二)

    题目:给定一个整型的数组,找出其中的个数使其和为某个指定的值,并返回这个数的下标(数组下标是从0开始)。假设数组元素的值各不相同,则要求时间复杂度为O(n),n为数组的长度。 = 2*A[i]){ //获取结果的个下标 res[0] = i; res[1] == hm.get(target - A[i] ] [1] 4 26 4 17 [[5]] [1] 5 25 5 16 [[6]] [1] 6 24 6 15 [[7]] [1] 7 23 7 14 [[8]] [1] 8 [[1, 5, [0, 4]], [2, 4, [1, 3]], [3, 3, [2, 2]], [4, 2, [3, 1]], [5, 1, [4, 0]]] 拓展 如果数组可能出现相同值的元素,那么上述算法还能正确解决吗 2 4 13 21 [[3]] [1] 3 3 3 3 12 20 [[4]] [1] 4 2 4 2 11 [[5]] [1] 5 1 5 1 [[6]] [1] 2 4

    50840发布于 2019-02-18
  • 来自专栏Debug客栈

    Leetcode 之和

    题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。

    41620发布于 2019-12-24
  • 来自专栏小丑的小屋

    Leetcode之和

    image.png 最开始看到简单个字,还是信息十足。但是读了3遍题目之后,整个人都沙雕了,扪心自问“我这也太菜了吧,读了3遍题目,脑子一片空白"。 image.png 我的天呐,这也行,但是越想越不对劲,题目中有一句话数组中同一个元素不能使用遍,我这个写法存在同一元素使用多次的问题,这就不太开心了,继续发奋图强。 既然同一元素不能使用遍,那么改变思路,设置一个空的集合,使用目标值减去数组中的值,结果如果存在于集合中那么返回下标,如果不存在放到集合中,因为Set集合会自动去重,所以就不再在同一元素的问题了。

    38210发布于 2020-09-20
  • 来自专栏全栈程序员必看

    Python – 之和

    给定列表a和一个目标值target,求列表中之和为target的值的索引; a = [1,5,6,8,9,4,5,6,3,2,1,7,5,6,9,8,4,5,6,2,1,0,1,2,0,1,2,5,9,10 ] b = [11,55,88,99,66,4,77,33,22,1,6,12,35] ---- ---- 穷举(适应性强) def x(nums,target): result = [

    54710编辑于 2022-08-18
  • 来自专栏Java爬坑系列

    【LeetCode】之和

    题目说明 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那个整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 解题思路1:穷举法 从题目意思理解,就是从给定的整数数组中找到个整数 ,使得它们的和与给定的相等。 我们再来分析一下上面的穷举算法,要从一个集合中找出个数,使得它们的和与给出的target相等,使用穷举算法时,当我们选出第一个a后,需要循环遍历之后的,然后一一进行加和判断,但实际上,我们只需要知道剩下的里 如果target减去当前遍历数值后的不存在于map中,则将当前数值与序号的映射关系存入map中。也许你会问,那找到第一个要寻找的时,第二个显然还不在map中,那怎么办呢?

    63810发布于 2019-05-25
领券