网站开发建设专业,深圳专业建站多少钱,aqq安装下载,wordpress主题黑糖文章目录 题目题解方法1-暴力方法2-哈希 题目
原题链接#xff1a;两数之和 题解
方法1-暴力
我最先想到的方法就是暴力#xff0c;两层for循环#xff0c;也能通过。#xff08;拿到算法题在没有思路的时候暴力就是思路#xff0c;哈哈哈#xff09;
public class T… 文章目录 题目题解方法1-暴力方法2-哈希 题目
原题链接两数之和 题解
方法1-暴力
我最先想到的方法就是暴力两层for循环也能通过。拿到算法题在没有思路的时候暴力就是思路哈哈哈
public class T1 {public static int[] twoSum(int[] nums, int target) {for (int i 0; i nums.length; i) {for (int j i1; j nums.length; j) {if(nums[i]nums[j]target){return new int[]{i,j};}}}return null; //这行代码没用 不写不行 随便返回一个数组即可}public static void main(String[] args) {int[] nums {2,7,11,15};int target 9;int[] res twoSum(nums, target);System.out.println(Arrays.toString(res));}
}
方法2-哈希 public class T1 {public static int[] twoSum(int[] nums, int target) {MapInteger, Integer map new HashMap();for (int i 0; i nums.length; i) {if(map.containsKey(target-nums[i])){return new int[]{i, map.get(target-nums[i])};}map.put(nums[i],i);}return null;}public static void main(String[] args) {int[] nums {2,7,11,15};int target 9;int[] res twoSum(nums, target);System.out.println(Arrays.toString(res));}
}
使用哈希表
使用HashMap来存储数组中的每一个数和它的索引。在遍历数组时对于每个数计算其补数即target - nums[i]并检查这个补数是否在哈希表中。如果补数存在直接返回它的索引和当前数的索引
可能刚开始接触有点疑惑。 用两个for可能更容易看懂时间复杂度不变O(n) public static int[] twoSum(int[] nums, int target) {MapInteger, Integer map new HashMap();for (int i 0; i nums.length; i) {map.put(nums[i],i);}for (int i 0; i nums.length; i) {if(map.containsKey(target-nums[i])){return new int[]{i, map.get(target-nums[i])};}}return null;}打算现在开始坚持平均每天至少一道算法题写出自己的做题思路想法欢迎你们指点我也喜欢和你们交流多交流可以让自己有更深的理解开阔自己的思维。多刷算法题可以锻炼自己编程思维编程能力。 ❤觉得有用的可以留个关注❤