成都装修公司网站建设,建设免费二级网站,网站管理员权限设置权限设置,网站制作排名优化写在前面 最近想复习一下数据结构与算法相关的内容#xff0c;找一些题来做一做。如有更好思路#xff0c;欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 给定一个整数数组 nums 和一个目标值 target#xff0c;请你在该数组中找…写在前面 最近想复习一下数据结构与算法相关的内容找一些题来做一做。如有更好思路欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 给定一个整数数组 nums 和一个目标值 target请你在该数组中找出和为目标值的那两个整数并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是你不能重复利用这个数组中同样的元素。
示例
给定 nums [2, 7, 11, 15], target 9
因为 nums[0] nums[1] 2 7 9
所以返回 [0, 1]二、具体步骤
1.环境说明
名称说明IntelliJ IDEA2019.2
2.代码
以下为Java版本实现 public class Lc1_twoSum {public static void main(String[] args) {int[] nums {2, 7, 11, 15};int target 9;int[] result twoSum(nums, target);System.out.println(Arrays.toString(result));}/*** O(n)** 思路循环 map** 返回值是int[]* 二数之和可以结合map变成二数之差** 定义一个mapkey为数组中的值value为key在数组中的位置* 循环数组得到nums[i], remain target - nums[i]* 判断remain是否在map中* 是返回i以及map.get(remain)* 否则添加到map中* 循环结束则为找不到这样的值**/private static int[] twoSum(int[] nums, int target) {MapInteger, Integer map new HashMap();for (int i 0; i nums.length; i) {// 用target-当前值然后判断map中是否包含int remain target - nums[i];if (map.containsKey(remain)) {return new int[]{map.get(remain), i};}map.put(nums[i], i);}throw new IllegalArgumentException(no solution);}
} 写在后面 如果本文内容对您有价值或者有启发的话欢迎点赞、关注、评论和转发。您的反馈和陪伴将促进我们共同进步和成长。