数据结构与算法
我本半山人
人生昧旅,砥砺前行
展开
-
归并排序、Master公式
文章目录基本思想实现对数器验证递归时间复杂度计算 Master 公式 基本思想 归并排序采取分治的思想进行排序,借用一张图片说明一下 将n个元素从中间切开,分成两部分。(左边可能比右边多1个数) 将步骤1分成的两部分,再分别进行递归分解。直到所有部分的元素个数都为1。 从最底层开始逐步合并两个排好序的数列。 优点在于,分治之后,合并排序的过程时间复杂度是O(N)(只需要扫描一遍就可以将两个有序的数组合并成一个有序数组) 实现 public static void MergeSort(int[] arr原创 2022-01-06 10:13:32 · 846 阅读 · 0 评论 -
异或(^)
异或(^)计算:性质Ques1.不使用额外空间交换两个数2.一个数组中其它数都出现多次,只有一个出现单次,求出现单次的数3.一个数组中其它数都出现多次,只有两个出现单次,求出现单次的数 计算: 计算时可以看作二进制无进位相加 性质 0^N == N , N^N = 0 异或运算满足交换律结合律 Ques 1.不使用额外空间交换两个数 a = a^b; b = a^b; //b = a^b^b = a^0 = a a = a^b; //a = a^b^a = 0^b原创 2021-12-13 15:08:43 · 340 阅读 · 0 评论 -
数据结构-单调栈
原创 2021-05-21 15:48:35 · 67 阅读 · 0 评论 -
数据结构-滑动窗口问题
我为大家画了一下大致的流程 以下是按照上面的思路对Leetcode239题的解答,理解了滑动窗口之后这道题目就很简单了,代码如下 public int[] maxSlidingWindow(int[] nums, int k) { //双端队列 LinkedList<Integer> linkedList = new LinkedList(); //结果集 数量为 nums.length - k + 1 int[] .原创 2021-04-30 00:04:25 · 135 阅读 · 0 评论