![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
干了这杯柠檬多
运气是实力的一部分,但我运气向来不好,所以只能靠实力去弥补!
展开
-
二叉树的遍历(java代码实现)
二叉树的遍历分为以下三种:先序遍历:遍历顺序规则为【根左右】中序遍历:遍历顺序规则为【左根右】后序遍历:遍历顺序规则为【左右根】什么是【根左右】?就是先遍历根,再遍历左孩子,最后遍历右孩子它的前序遍历顺序为:ABDGHCEIF(规则是先是根结点,再前序遍历左子树,再前序遍历右子树)它的中序遍历顺序为:GDHBAEICF(规则是先中序遍历左子树,再是根结点,再是中序遍历右...原创 2018-08-18 10:20:36 · 6651 阅读 · 0 评论 -
连续子数组最大和 (java实现)
一个整形数组(有正有负),求数组中连续子数组(最少有一个元素)的最大和,要求时间复杂度O(n)。java代码实现: public static void main(String[] args) { int[] a= {2,-3,5,-3,5,7,-8,1,3,-5,6}; int maxvalue =a[0]; //最大和 int add=0; //第0-i个元素的和 ...原创 2019-08-19 10:27:07 · 530 阅读 · 0 评论 -
这可能是历史上最简单的一道Java面试题了
来自:知乎这可能是历史上最简单的一道Java面试题了。题目很简单,完成代码,判断一个整数是否是奇数:public boolean isOdd(int i)相信相当数量的人都已经在准备吐槽了,只要看过《编程珠玑》的人都知道这道题的答案和其中极为简单的道理。不过别着急骂街,不管你信不信,这道笔试题我拿到的答案好多都长这样:public boolean isOdd(int i) {...转载 2019-03-25 10:37:16 · 248 阅读 · 0 评论 -
老虎证券 2018 java编程笔试题
有一个首尾相接的字符序列,全部元素已大写字符表示,要求截取一段包含ABCDE的连续子串,返回这一子串的长度,例如ABCYDYE,返回6,ATTMBQECPD返回7.public class Test { public static void main(String[] args) { System.out.println(Test.method("ABCYDYE")); S...原创 2019-03-02 11:44:56 · 1872 阅读 · 5 评论 -
java整数反转 找缺失的数字 算法思路
1.整数反转 120->21 ,-123->-321,会出现溢出的情况。思路:得到一个数的绝对值,取这个数的最后一位放在新数的第一位;将新数扩大10倍,将该数值从个位变为十位,个位数为传过来的数的倒数第二位,依次类推。public static void main(String[] args) { int a=120; int b=-123; int c=rese...原创 2018-10-11 17:24:50 · 320 阅读 · 0 评论 -
海量数据处理 分而治之/hash映射和堆排序
对于海量数据而言,由于无法一次性装进内存处理,导致我们不得不把海量的数据通过hash映射分割成相应的小块数据,然后再针对各个小块数据通过hash_map进行统计或其它操作。什么是hash映射?简单来说,就是为了便于计算机在有限的内存中处理big数据,我们通过一种映射散列的方式让数据均匀分布在对应的内存位置(如大数据通过取余的方式映射成小数存放在内存中,或大文件映射成多个小文件),而这个映射...原创 2018-08-27 21:05:09 · 422 阅读 · 1 评论 -
归并排序算法(java代码实现)
归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序的效率是比较高的,设数列长为N,将数列分开成小数列一共要logN步,每步都是一个合并有序数列的过程,时间复杂度可以记为O(N),故一共为O(N*logN)。因为归并排序每次都是在相邻的数据中进行操作,所以归并排序在O(N*l...原创 2018-08-20 15:45:38 · 1028 阅读 · 0 评论 -
直接插入排序(java实现)
直接插入排序,指每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。具体方法是第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。它是由两层嵌套循环组成的,外层循环标识并决定待比较的数值,内层循环为待比较数值确定其最终位置。直接插...原创 2018-08-18 12:18:37 · 286 阅读 · 0 评论 -
银行家算法(c语言实现)
银行家算法是资源和死锁避免的算法,由艾兹格·迪杰斯特拉(Edsger Dijkstra) 设计的算法用于测已确定总数量的资源分配的安全性,在决定是否该分配应该被允许并进行下去之前,通过“s-state”校验码测试资源分配活动期间产生死锁条件的可能性。 该算法是为为THE操作系统设计并且最在在EWD108描述。当一个新的进程进入系统时,进程必须声明所需每个资源实例最大的数量和类型。显然,资...转载 2018-08-18 10:51:12 · 37954 阅读 · 7 评论 -
快速排序(java代码实现)
常用排序的时间及空间复杂度:时间复杂度和空间复杂度详见:https://blog.csdn.net/jsjwk/article/details/84315770稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算...原创 2018-08-18 10:45:07 · 34615 阅读 · 10 评论 -
字节跳动算法单链表反转 java实现
参考博客:https://blog.csdn.net/kexuanxiu1163/article/details/100165991题目给定一个单链表的头节点 head,实现一个调整单链表的函数,使得每K个节点之间为一组进行逆序,并且从链表的尾部开始组起,头部剩余节点数量不够一组的不需要逆序。(不能使用队列或者栈作为辅助)例如:链表:1->2->3->4->5-...原创 2019-09-12 17:13:26 · 621 阅读 · 0 评论