网站建设款如何入账,视频网页制作教程,html5企业网站赏析,腾讯企业邮箱注册申请官网原题链接#xff1a;
1. 两数之和 https://leetcode.cn/problems/two-sum/
完成情况#xff1a;
##1. n 2 n^2 n2复杂度
2.HashMap进行优化 3.空间换时间方法
即#xff0c;构建一个 1 0 − 9 10^-9 10−9 到 1 0 9 10^9 109这个大的数组#xff0c;然后把数填进去
1. 两数之和 https://leetcode.cn/problems/two-sum/
完成情况
##1. n 2 n^2 n2复杂度
2.HashMap进行优化 3.空间换时间方法
即构建一个 1 0 − 9 10^-9 10−9 到 1 0 9 10^9 109这个大的数组然后把数填进去直接一个for循环即可搞定。 因此总共会用到两个for循环时间复杂度即2* O ( n ) O(n) O(n)但是空间复杂度会超级大。
解题思路
1. n 2 n^2 n2复杂度
没啥思路暴力循环
2.HashMap进行优化
这里当时没转过弯为啥**map.put(nums[i],i);**要放在后面 仔细一想你for的时候检查的是1但是put之后map就会增加 它的底层是链表啊迭代器之类的我估计所以你放在前面的话会导致i值向上偏。 当然了说错了请狂喷我。这里真的不是很懂 ~ 参考代码
1. n 2 n^2 n2复杂度
package 西湖算法题解;public class _1_两数之和 {public int[] twoSum(int[] nums, int target) {int ans[] new int[2];for (int i0;inums.length;i){for (int ji1;j nums.length;j){if (nums[i]nums[j]target){ans[0] i;ans[1] j;return ans;}}}return ans;}
}
2.HashMap进行优化
class Solution {public int[] twoSum(int[] nums, int target) {int res [] new int[2];MapInteger, Integer map new HashMap();for (int i 0; i nums.length; i){int temp target - nums[i];if(map.containsKey(temp)){res[1] i;res[0] map.get(temp);return res;}map.put(nums[i],i);}return res;}
}
/**/