河南住房和城乡建设厅一体化平台网站,如何加强网站建设和信息宣传,樱花jsq30q211,自己做的网站本地虚拟上传题目描述 给定一个整数数组 nums 和一个目标值 target#xff0c;请你在该数组中找出和为目标值的那 两个 整数#xff0c;并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是#xff0c;你不能重复利用这个数组中同样的元素。
示例:
给定 nums [2, 7, 1…题目描述 给定一个整数数组 nums 和一个目标值 target请你在该数组中找出和为目标值的那 两个 整数并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是你不能重复利用这个数组中同样的元素。
示例:
给定 nums [2, 7, 11, 15], target 9因为 nums[0] nums[1] 2 7 9
所以返回 [0, 1]解题
/*** 思路1暴力法对每个元素都去查找是否有与其和为target的元素* param nums* param target* return*/public int[] twoSum1(int[] nums, int target) {for(int i0;inums.length;i) {for(int ji1;jnums.length;j) {if(nums[i] nums[j] target) {return new int[]{i,j};}}}return null;}/*** 思路2对思路1进行优化利用HashMap的O(1)查找性用空间换时间* param nums* param target* return*/public int[] twoSum2(int[] nums, int target) {MapInteger, Integer map new HashMapInteger, Integer(nums.length);for(int i0;inums.length;i) {map.put(nums[i], i);}for(int i0;inums.length;i) {if(map.containsKey(target-nums[i]) map.get(target-nums[i]) !i) {return new int[]{i,map.get(target-nums[i])};}}return null;}/*** 思路3对思路2进行优化一遍迭代完成* param nums* param target* return*/public int[] twoSum(int[] nums, int target) {MapInteger, Integer map new HashMapInteger, Integer(nums.length);for(int i0;inums.length;i) {if(map.containsKey(target-nums[i])) {return new int[]{i,map.get(target-nums[i])};}else {map.put(nums[i], i);}}return null;}