摘要: 一、题目描述 二、解法 思路1:双指针。最优解,时间复杂度为O(n) 思路2:二分搜索。 (Tips:看见 数组 + 有序,第一时间想到 二分!!) 时间复杂度:O(nlogn),其中二分的复杂度为O(logn) class Solution { public int[] twoSum(int[] 阅读全文
posted @ 2020-12-06 18:26 不学无墅_NKer 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 一、题目描述 ☆☆二、解法 方法1:基于快排的选择方法,即快排partition函数的应用。 Note: 针对本题来说,快排的枢纽点要随机取,否则极端测试用例,会导致退化为O(n^2) 方法2:基于堆排序的选择方法。 解法1: class Solution { public int findKthL 阅读全文
posted @ 2020-12-06 17:38 不学无墅_NKer 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 一、题目描述 二、解法 思路:就是归并排序的 “合并”部分。 class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { // 把nums1拷贝一份 int[] temp = new int[m]; for 阅读全文
posted @ 2020-12-06 15:08 不学无墅_NKer 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 一、题目描述 二、解法 思路1:计数排序。分别统计0,1,2的元素个数。 复杂度分析:时间复杂度:O(n);空间复杂度:O(k), k为元素的取值范围; 需要扫描数组两遍。 思路2:三路快排。 只需要遍历数组一遍 重点是设计循环不变量,定义zero和two的含义后,在循环中始终要维护这个定义。 cl 阅读全文
posted @ 2020-12-06 12:02 不学无墅_NKer 阅读(116) 评论(0) 推荐(0) 编辑