首页 > 其他分享 >01-两数之和

01-两数之和

时间:2023-10-27 13:11:26浏览次数:26  
标签:map 01 target nums int 数组 两数 HashMap

一、两数之和

题目如下:

20231027123832

也就是输入先给定一个数组,和目标的target值,然后再找出目标为target值的一个索引

C语言代码如下:

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
	// 先动态分配两个int类型大小的内存空间
    int *temp = (int *) malloc(sizeof(int) *2);
	// 用两个for循环去遍历该数组,且第二个for循环以该数组的第二个值开始遍历
    for(int i =0; i < numsSize;i++) {
        for(int j=i+1;j<numsSize;j++) {
            // 当遍历出来的值,等于target值时
            if(nums[i] + nums[j] == target) {
                // 当两值相等时,将该索引存储到分配的内存中
                temp[0] = i;
                 temp[1] = j;
                // 元素个数重新赋值
                *returnSize = 2;
                // 返回该指针变量
                return temp;

            }
           
        }
    }
    *returnSize = 0;
    return 0;
}

Java版本(暴力枚举[双for循环])

class Solution {
    public int[] twoSum(int[] nums, int target) {


        for(int i =0; i <nums.length;i++) {
            for(int j= i+1;j<nums.length;j++) {
                if(nums[i] + nums[j] == target) {
                    return new int[] {i,j};
                }
            }
        }
         return new int[0];
    }

   
}

Java版本(HashCode版)

package day01;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class demo01TwoSum {

	public static void main(String[] args) {
		
		int [] nums = {3,2,4};
		int [] num = twoSum(nums,6);
		System.out.println(Arrays.toString(num));
		
		
		
	}
	
	public static int[] twoSum(int[] nums,int target) {
	 	// 创建HashMap对象
		Map<Integer, Integer> map = new HashMap<>();  
		// Map<Key,Value> map = new HashMap<>();
		// 遍历数组  // target-nums[i] == 9-2 == 
		for(int i = 0 ; i< nums.length;i++) {
		// 查看target-nums[i]对应的Value是否存在
			if(map.containsKey(target-nums[i])) { 
				// get返回key所对应的Value值
				// 有就创建数组,将该数与所在索引写入该数组
				return new int [] {map.get(target-nums[i]),i}; 
				
			}
			//put方法为去HashMap中添加元素// 即 map.put([Key],[Value]);
			map.put(nums[i], i); 
		}
		// 非法参数异常
		
		
		throw new IllegalArgumentException("No two sum solution");
		
		
	}
}

标签:map,01,target,nums,int,数组,两数,HashMap
From: https://www.cnblogs.com/bky111/p/17792120.html

相关文章

  • [Leetcode] 0104. 二叉树的最大深度
    104.二叉树的最大深度题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7],3/\920/\157返回它的最大深度 3。......
  • P3989 [SHOI2013] 阶乘字符串
    P3989bzoj#4416先考虑部分分,看到\(n\leq20\)容易想到这个部分可以用状压起初可以设\(dp_{S,i}\)表示在前\(i\)个数中选出集合\(S\)中的字母是否可行,转移即枚举下一个字母是什么这个dp有一个很显然的性质:他肯定是前缀一段\(0\),后缀一段\(1\)。我们不妨优化一......
  • PAT 甲级【1012 The Best Rank】
    本题用java极容易超时,提交了好几次才成功另外9088777750,名次应该是12335,不是12334 importjava.io.*;publicclassMain{@SuppressWarnings("unchecked")publicstaticvoidmain(String[]args)throwsIOException{StreamTokenizer......
  • 软考系列(系统架构师)- 2014年系统架构师软考案例分析考点
    试题一软件架构(MYC架构、扩展接口模式)MVC架构风格最初是Smalltalk-80中用来构建用户界面时采用的架构设计风格。其中M代表模型(Model),V代表视图(View),C代表控制器(Controller)。在该风格中,模型表示待展示的对象,视图表示模型的展示,控制器负责把用户的动作转成针对模型的操作。模......
  • 【洛谷 8649】 [蓝桥杯 2017 省 B] k 倍区间
    题目描述给定一个长度为 �N 的数列,�1,�2,⋯��A1​,A2​,⋯AN​,如果其中一段连续的子序列 ��,��+1,⋯��(�≤�)Ai​,Ai+1​,⋯Aj​(i≤j) 之和是 �K 的倍数,我们就称这个区间 [�,�][i,j] 是 �K 倍区间。你能求出数列中总共有多少个 �K 倍区间吗?输入格式第一行包含两个整数 �N 和 �K......
  • 基于NB-iot技术实现财物跟踪的EA01-SG定位模块方案
    NB-iot无线数传模块可做财物防盗窃器,让你的财物可定位跟踪!随着社会的发展,公共资源及共享资源的蓬勃发展,对资产管理和资产追踪有了新的需求,如:某儿童玩具车在商场外面提供车辆乘坐游玩服务,但是担心玩具车辆被盗窃等资产管理、资产追踪的问题。要是有一种神器可以监管这些资产就好......
  • 001Sentence Smash(8kyu)from codewars
    SentenceSmash(8kyu)Writeafunctionthattakesanarrayofwordsandsmashesthemtogetherintoasentenceandreturnsthesentence.Youcanignoreanyneedtosanitizewordsoraddpunctuation,butyoushouldaddsspacesbetweeneachword.Becareful,ther......
  • 面试必刷TOP101:13、判断一个链表是否为回文结构
    一、题目二、题解2.1方法一使用list列表因为需要判断是否为回文结构,所以要比较头尾的数据,而链表无法随机查询数据,所以可以先将链表转换成list。具体步骤首先初始化一个list列表;遍历链表,将链表中的值转移至list中;在list中通过比较头尾的值来判断链表是否为回文结构。代码如下:import......
  • 20231019NOIP训练赛
    20231019NOIP训练赛时间安排7:50-8:50写T18:50-9:30写T29:30-10:30写T3T410:30-11:50写T1总结T2没花时间想,没想到建图题解T1枚举最大公约数,然后统计最大公约数的倍数T2并查集,设u=\(X_{b_i}\),v=\(X_{a_i}\),在u和v间建一条长度为\(c_i\)的边,可以用并查集维护,如果u和v已......
  • [SUCTF 2018]MultiSQL1
    0x01注入点发现登录,注册页面都尝试了一下,没有可以注入的地方但是获取了有一个比较关键的信息:admin是其中已经存在的一个用户按照正常流程注册登录:注意url中的id值,修改id=1之后:可以猜测,id是有一个get注入点。0x02注入类型判断可堆叠注入和过滤(select,union)是怎么看出来......