01-两数之和

一、两数之和

题目如下:

20231027123832

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

C语言代码如下:

copy
/** * 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循环])

copy
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版本(HashMap版)

copy
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"); } }
posted @   夏日清凉~  阅读(10)  评论(0编辑  收藏  举报
相关博文:
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起