首页 > 其他分享 >Leecode 求两数之和

Leecode 求两数之和

时间:2024-03-17 15:03:53浏览次数:25  
标签:return target nums int Leecode hashtable new 两数

Day1 刷题

  1. 我的解题思路是按照第一个元素往后排,不重复的找相加的组合,判断是否为target值,时间复杂度较高,为\(\mathcal{O}(n^2)\)。
class Solution {
    public int[] twoSum(int[] nums, int target) {
        int flag = 1;
        while (flag == 1) {
            for (int i = 0; i < nums.length; i++) {
                for (int j = i+1; j < nums.length; j++) {
                    if (nums[i] + nums[j] == target) {
                        flag = 0;
                        return new int[]{i,j};                        
                    }
                }
            }
        }
        return new int[0];
    }
}
  1. 力扣官方题解的解题思路如下:巧妙利用hash表的找值特点,且先找值再插值的方法避免了找值找到自己!只能说太神了!
class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> hashtable = new HashMap<Integer, Integer>();
        for (int i = 0; i < nums.length; ++i) {
            if (hashtable.containsKey(target - nums[i])) {
                return new int[]{hashtable.get(target - nums[i]), i};
            }
            hashtable.put(nums[i], i);
        }
        return new int[0];
    }
}
  1. 在这里介绍一下上述用到的hashmap的方法:

put(Object key, Object value)将指定的键值对添加到哈希表中;

containsKey()返回布尔变量;

get(Key)返回对应键的指;

Map<Integer, Integer> hashtable = new HashMap<Integer, Integer>()新建一个哈希表

标签:return,target,nums,int,Leecode,hashtable,new,两数
From: https://www.cnblogs.com/xytang-mini-juan/p/18078576

相关文章

  • 每日一练:LeeCode-125、验证回文串【字符串+双指针】
    如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个回文串。字母和数字都属于字母数字字符。给你一个字符串s,如果它是回文串,返回true;否则,返回false。示例1:输入:s="Aman,aplan,acana......
  • Leecode Day3
    初始想法也是用双指针,问题在于没有灵活运用与运算(实现求和后结果满足二进制表达形式),未设置加位!(add);多了索引位置i,只需要指针i和j。当前位为空。错误代码如下:学习画图小匠的代码:https://leetcode.cn/problems/add-binary/solutions/2652640/javapython3cwei-yun-suan-s......
  • LeetCode01.两数之和
    ques:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例1:输入:nums=......
  • leetcode 2.两数相加 ,链表
    2.两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字0之外,这两个数都不会以0 开头。 示例1:输入:l1=[2,4......
  • abc331E 两数组元素间带限制的最大和
    题面:给定大小为n的数组A,大小为m的数组B,那么共有n*m个元素和。现给出L对禁用下标(a,b),找一对不在L中的下标(i,j),使用A[i]+B[j]最大,求该最大值。范围:n,m<=1e5;1<=L<=min(1e5,nm-1)思路:先对A和B按从大到小排序,然后让i指向A起始位置,j指向B起始位置,将对应的四元组(sum,i,j,flag)加入......
  • abc238D 两数之和跟按位与
    给定非负整数a和s,问是否存在一组非负整数(x,y),满足x&y=a,并且x+y=s?数据范围:0<=a,s<2^60思路:异或是不进位加法,如果考虑进位,加上按位与的结果左移1位即可,也就是:x+y=(x^y)+((x&y)<<1),代入得x^y=s-2a,并且x&y=a,逐位分析可知,按位与的结果为1时,异或结果必为0。#include<bits/stdc++.h>......
  • LeetCodeHot100 1.两数之和 46.字母异位词分组 128.最长连续序列
    1.两数之和https://leetcode.cn/problems/two-sum/description/?envType=study-plan-v2&envId=top-100-likedpublicint[]twoSum(int[]nums,inttarget){HashMap<Integer,Integer>map=newHashMap<>();for(inti=0;i<nums.l......
  • 代码随想录 第六天 哈希表理论基础 ● 242.有效的字母异位词 ● 349. 两个数组的交
    LeetCode:242.有效的字母异位词-力扣(LeetCode)思路:既然只判断两个字符串的字母,就一个++,一个--,最后如果二十六个字母都是零,说明两个字符串相等。反思: //charat(i)是返回字符串索引,所以s.charAt(i)-'a'实际上是获取字符串s中第i个字符相对于字母'a'的偏移量。......
  • Leecode知识点
    创建结构体指针:varlist*ListNode=&ListNode(0,head)上面的写法等同于list:=  &ListNode(0,head)要想创建一个链表,首先要创建一个表头num:=new(ListNode)然后将其进行数据赋值以及链接到下一个middle:=num //这里对middle进行修改之......
  • 两数之和-输出有序数组
    167TwoSumII-Inputarrayissorted问题描述:给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值index1和index2,其中index1必须小于index2。说明:返回的下标值(index1和index2)不是从零开始的。你可以假设每个输入......