01-两数之和

发布时间 2023-10-27 13:08:33作者: 夏日清凉~

一、两数之和

题目如下:

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");
		
		
	}
}