随笔分类 -  算法

摘要:剑指offer练习(测试环境为牛客oj) 第一题 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 考点 数组 解题思路 从左下角开始找,如果目标 阅读全文
posted @ 2020-03-27 19:04 阿江是个程序猿 阅读(255) 评论(0) 推荐(0)
摘要:题目一 思路 1)递归 忽略打印,实际上递归节点到达每个节点的顺序如图。打印的时机放到第一行就是先序遍历,打印的时机放到第二行就是中序遍历,打印的时机放到第三行就是后序遍历。 先序遍历:根节点→左子树→右子树。按照忽略打印实际递归顺序每个数第一次出现的顺序。1 2 4 5 3 6 7 中序遍历:左子 阅读全文
posted @ 2020-02-15 16:22 阿江是个程序猿 阅读(660) 评论(0) 推荐(0)
摘要:题目一 代码实现 1 package class_03; 2 3 public class Code_07_ReverseList { 4 5 public static class Node { 6 public int value; 7 public Node next; 8 9 public 阅读全文
posted @ 2020-02-12 12:21 阿江是个程序猿 阅读(212) 评论(0) 推荐(0)
摘要:题目一 思路: ①得到二维数组左上角(a,b)和右下角(c,d)的点,就能打印出最外层的框。 如果,得到的左上角(a,b)和右下角(c,d)是在同一行,即a=c,说明该数组是棒状结构,直接从(a,b)加到(a,d)即可。 如果,得到的左上角(a,b)和右下角(c,d)是在同一列,即b=d,说明该数组 阅读全文
posted @ 2020-02-12 09:16 阿江是个程序猿 阅读(579) 评论(0) 推荐(0)
摘要:题目一 用数组结构实现大小固定的对列和栈。 1 队列 设置start和end变量,初始都指向0位置。size变量约束start和end的行为。用户要设置队列的长度initialSize。 size是随着数的加入和弹出动态增减的~初始是0。只要不超过数组的initialSize(不小于0)就可以不断增 阅读全文
posted @ 2020-02-11 15:04 阿江是个程序猿 阅读(396) 评论(0) 推荐(0)
摘要:1 冒泡排序 时间复杂度 O(n²) 。额外空间复杂度O(1)。 1)算法步骤 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的 阅读全文
posted @ 2020-02-11 13:42 阿江是个程序猿 阅读(442) 评论(0) 推荐(0)
摘要:实现比较器有两种方法 1 一些类自己实现Comparable,笔试用的较少。 2 人为定义对类的比较。实现Comparator接口。 比较器的应用: 1 快速的对一组数据进行排序,尤其是数据是自己定义的类型时。(如果不使用比较器,默认按内存地址来排序) 2 用于堆结构中(优先级队列)。(如果不使用比 阅读全文
posted @ 2020-02-11 11:33 阿江是个程序猿 阅读(398) 评论(0) 推荐(0)
摘要:题目一 解题思路 给定一个num,一个指针x,初始指向-1位置,0~x之间的数都是小于等于num的。cur是当前数所在位置。 依次遍历数组,如果大于num,cur走到下一个数,如果小于等于num,将当前数与x的下一个位置上的数交换,x走到下一个位置,cur走到下一个位置。 ······以此类推,直到 阅读全文
posted @ 2020-02-10 16:02 阿江是个程序猿 阅读(216) 评论(0) 推荐(0)
摘要:小和问题 笨办法:每个位置左边都遍历一下,时间复杂度O(n²),额外空间复杂度O(1)。 解决思路 a. 将当前序列分为两个子序列,分别求其小和 b. 对a划分得到的两个子序列进行merge操作,得到合并过程产生的小和,再加上a得到的两个子序列的小和之和 c. 递归地执行a和b merge操作采用二 阅读全文
posted @ 2020-02-10 09:42 阿江是个程序猿 阅读(168) 评论(0) 推荐(0)
摘要:例子 找出一组数中的最大值。 递归思路: 找到左边和右边的最大值max左和max右,max左和max右中的最大值就是这组数的最大值;以此类推···直到所有数都排好序。 递归原理 子过程压栈出栈的过程。 任何递归过程都可以改成非递归。 递归时间复杂度的计算——Master公式 阅读全文
posted @ 2020-02-09 19:17 阿江是个程序猿 阅读(158) 评论(0) 推荐(0)
摘要:对数器的好处 1 当没有oj时,也可以验证算法是否正确 2 小样本测试通过,大样本测试出错了,可以使用对数器迅速看出错在哪 3 验证贪心策略是否正确 对数器的概念与使用 随机样本产生器 笔试前要准备好各类随机样本产生器,如数组随机样本产生器、二叉树随机样本产生器等。 代码举例 1 import ja 阅读全文
posted @ 2020-02-09 18:12 阿江是个程序猿 阅读(236) 评论(0) 推荐(0)