摘要: 一、题目描述 ☆☆☆☆☆二、解法 思路:暴力解法是O(n^3) 观察到 i 是一个“枢纽”,对于每个点 i ,遍历其余的点到 i 的距离。 时间复杂度O(n^2),空间复杂度O(n) 使用Map,其键是距离,值是距离出现的频次。 例如,如果距离值 dis 对应的频次为1,那就无法找到两个点与 i 距 阅读全文
posted @ 2020-12-11 21:41 不学无墅_NKer 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 一、题目描述 ☆☆☆☆二、解法 方法1:先排序,再判断。 “当且仅当它们的排序字符串相等时,两个字符串是字母异位词。” 方法2:按计数分类。 “当且仅当它们的字符计数(每个字符的出现次数)相同时,两个字符串是字母异位词。” class Solution { public List<List<Stri 阅读全文
posted @ 2020-12-11 17:15 不学无墅_NKer 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 一、题目描述 ☆☆☆☆二、解法 思路:将C+D的每一种可能放入查找表中,时间复杂度为O(n^2)。 由于可能有多组C+D的和相等,用Map记录每一个和出现了多少次。 举一反三:不是直接把数据放入查找表中,而是组合逻辑把特定的内容放入查找表中。还可以把A+B和C+D的每一种可能放入两个查找表中,时间复 阅读全文
posted @ 2020-12-11 15:27 不学无墅_NKer 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 一、题目描述 ☆☆☆二、解法 思路:与15题三数之和类似, 排序+双指针。 class Solution { public int threeSumClosest(int[] nums, int target) { /** * 方法1: 排序 + 暴力法, 时间复杂度O(n^3) */ /*Arra 阅读全文
posted @ 2020-12-11 12:29 不学无墅_NKer 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 一、题目描述 ☆☆☆☆二、解法 思路:与三数之和思想一样,排序+对撞指针。 时间复杂度 O(n^3)+O(nlogn) -> O(n^3) 需要注意去重以及剪枝,小细节非常多。 class Solution { public List<List<Integer>> fourSum(int[] num 阅读全文
posted @ 2020-12-11 11:21 不学无墅_NKer 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 一、题目描述 ☆☆☆☆二、解法 思路:排序+对撞指针,注意需要去重。 class Solution { public List<List<Integer>> threeSum(int[] nums) { /** * 思路:排序 + 对撞指针 * 时间复杂度 O(n^2) */ List<List<I 阅读全文
posted @ 2020-12-11 10:22 不学无墅_NKer 阅读(98) 评论(0) 推荐(0) 编辑