算法与数据结构
Jeff_Scott
Less is more
展开
-
int数组的全排列
import java.util.*;public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int arr[] = new int[n]; ...原创 2019-10-21 20:51:23 · 333 阅读 · 0 评论 -
四大金刚整理
Table of Contents1.Java1.0 良心参考资料1.1 什么是单例模式?如何实现单例模式?哪种在并发的环境中会更好?1.2 什么是Lambda表达式?你能讲一下Lambda表达式的例子吗?1.3 讲一下OOM1.4.在java代码里面怎么使用mysql?1.5.Java的深拷贝和浅拷贝1.6Java的NIO,讲一下多路复用?1.7 Sprin...原创 2019-09-12 09:57:57 · 3701 阅读 · 0 评论 -
秋招手撕代码系列
0.秋招之路似苍茫,不思量,自难忘,千里奔忙,无处话凄凉。笔试面试俱神伤,心似铁,身如钢,雄关不惧,成败自含香。良心总结:https://www.jianshu.com/p/3f0cd7af370dTable of Contents1.二分查找2.归并排序3. 快速排序4. 冒泡排序(优化版)5.拓扑排序6. 堆排序7.树的遍历8.全排列9. 反转...原创 2019-08-26 20:17:56 · 342 阅读 · 0 评论 -
渣渣渣变渣渣系列(7)
一、题目描述:二、算法思想:考虑到遍历链表的时间开销比较大,题目中仅要求实现最大的时间效率,所以可以采用用空间换时间的方法,具体操作就是用一个数组存储已经出现的数字,这样只需要遍历一次链表即可。三、核心代码: struct Link*rmv_cf(struct Link*str1,int n){ int i; int j=1; int A[n+1];//定义...原创 2017-04-11 20:59:17 · 353 阅读 · 0 评论 -
渣渣渣变渣渣系列(6)
一、题目描述:二、算法思想:本题的算法思想比较简单,因为题中已经给明数据结构,当后缀一样时,使用同一个存储空间,我们只需要想办法找出第一个两个链表的相同地址即可。本算法采用的方法是,首先将指针指向两个链表等长的位置,也就是忽略长的链表的多出来的前一部分。如题中,就是先将定义好的两个指针分别指向o和b,然后同时往后移动,当指针指向的两个地址相同时(i节点),即返回地址。三、核心代码:...原创 2017-04-09 22:29:52 · 462 阅读 · 0 评论 -
渣渣渣变渣渣系列(5)
一、题目描述:现在有n个圆盘从上往下从小到大叠在第一根柱子上,要把这些圆盘全部移动到第三根柱子要怎么移动呢?请找出需要步骤数最少的方案因此我们可以将问题简化描述为:n个盘子和3根柱子:A(源)、B(目的)、C(备用),盘子的大小不同且中间有一孔,可以将盘子“串”在柱子上,每个盘子只能放在比它大的盘子上面。起初,所有盘子在A柱上,问题是将盘子一个一个地从A柱子移动到B柱子。移动过程中,可以使用C...原创 2017-04-07 22:26:17 · 379 阅读 · 0 评论 -
渣渣渣变渣渣系列(4)
一、题目描述:二、算法思想:本算法的关键在于利用两个指针,一个指针用来遍历计数,另一个指针用来指向n-k个值,即倒数第k个值。三、核心代码: int search_k(int k,link*head){ link*p=head->next; link*q=head->next; int counter=0; while(p!=...原创 2017-04-05 22:29:12 · 356 阅读 · 0 评论 -
渣渣渣变渣渣系列(3)
<strong>一、题目描述:</strong> 二、算法思想:本算法的巧妙之处在于充分利用主元素的定义,即在序列中个数超过半数的元素。那么在动态统计的过程中,主元素出现的频率要最大可能的大于1/2。由于是动态统计,所以可能在局部范围内可能出现误判,当主元素在序列分布不均时,可能一开始出现误判,但最终是会被纠正的,这个是可以通过数学证明一下。由于是必...原创 2017-03-31 21:50:41 · 402 阅读 · 0 评论 -
渣渣渣变渣渣系列(2)
一、题目描述:(408联考真题 2011)二、算法思想:分别求两个升序序列A和B的中位数,设为a和b,求序列A和B的中位数过程如下:1)若a=b,则a或b即为所求中位数,算法结束。2)若a<b,则舍弃序列A中较小的一半,同时舍弃序列B中较大的一半,要求两次舍弃的长度相等。3)若a>b,则舍弃序列A中较大的一半,同时舍弃序列B中较小的一半,要求两次舍弃的长度相等。...原创 2017-03-30 22:03:26 · 460 阅读 · 0 评论 -
渣渣渣变渣渣系列(1)
一、题目描述:(408联考 2010真题) 二、算法思想: 可以将这个问题看作是把数组ab转换为ba(a代表数组的前p个元素,b代表数组中的余下n-p个元素),先将a逆置得到a-1b,再将b逆置得到a-1b-1,最后将整个a-1b-1逆置为(a-1b-1)-1=ba。三、核心代码: void Reverse(int R[],int fro...原创 2017-03-29 08:53:36 · 531 阅读 · 0 评论 -
渣渣渣变渣渣系列(9)
一、题目描述: 二叉树采用左右链存储,完成以下算法,要求算法尽可能的高效:1)判断二叉树是否为完全二叉树。2)输入二叉树的倒数第K个叶子节点。 二、算法思想:1)判断二叉树树是否为完全二叉树,可以采用反证法,当存在一个节点有且只有一个孩子时,则该二叉树不为完全二叉树,否则为完全二叉树。2)只需要按先序遍历二叉树,当遇到叶子节点就入栈,然后Pop第K个元素即可。三、核心...原创 2017-04-27 22:46:44 · 267 阅读 · 0 评论 -
渣渣渣变渣渣系列(8)
一、题目描述二、算法思想:本算法目的是求带权路径的长度,就是叶子节点的深度乘以叶子的权重之和。关键是如何求出每个叶子节点的深度,在这里最简单的方法就是利用递归算法。三、核心代码: int WPL(BiTNode*root)//封装先序法{ return wp1_PreOrder(root,0);}int wp1_PreOrder(BiTNode*root,i...原创 2017-04-16 11:26:48 · 323 阅读 · 0 评论