- 博客(7)
- 收藏
- 关注
原创 适配器模式(Adapter Pattern)理解
适配器模式定义将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性。让原本因接口不匹配不能一起工作的两个类可以协同工作。场景:1、开发时需要调用的第三方API并没有拿到,先写个接口并mock个实现类,拿到接口之后再一个适配器进行适配(代码整洁之道第八章提到);假定这样一个场景会比较容易进行理解伪代码如下interface Target{ void targetMethod();}class MockTargetImpl implements Ta..
2021-07-03 16:00:49 98
原创 【算法导论】动态规划切钢条
问题:钢条切割 给定长度为n英寸的钢条,和一个价格表P{1....n},求切割钢条的方案,使得收益R最大。如果钢条价格足够大,可以完全不用切割。来源:算法导论,第15章方法:1、递归穷举;2、动态规划思路:递归穷举:钢条分为两部分左边为不切割部分范围长度j,右边为切割部分范围n-j,收益Max{R = P[j]+R[n-j]} private static in
2015-09-27 20:33:15 1254
原创 【算法导论】求最大子数组
要求:找到数组中连续和最大的子数组来源:算法导论,第四章方法:分治法思路:一个串中和最大的子数组,可能出现的位置1、前一半(不包含中间元素) 2、后一半(不包含中间元素)
2015-09-27 17:04:07 356
原创 【从头开始学算法】归并排序
需求:将数组中元素排序思路:将数组拆分成若干一个元素的小数组,数组两两合并,与之前的排序方法不同在于,归并排序,需要额外的空间,用来临时存放合并后的小数组 public static void MergeSort(int[] arr, int first, int last) { System.out.println("MergeSort"+first+last);
2015-09-27 12:15:49 361
原创 【从头开始学算法】快速排序
需求:给定数组从小到大排序快速排序思路:1、选定第一个数字为标识flag,将数组分成两部分,一部分比flag大,一部分比flag小, 2、再将得到的两部分分别进行1,直到完成 第一步实现:1、从后向前,找到比flag小的,放到空中,自身空出来 2、从前向后,找到比flag大的,放到空中,自身空出
2015-09-26 18:33:14 396
原创 【从头开始学算法】选择排序 插入排序 冒泡排序
需求:对数组中数字进行排序选择排序:思想:从头开始,最小值和第一个交换,次小值和第二个交换。。。。。 private static void SelectionSort(int[] arr) { for(int i=0;i<arr.length;i++){ int min=i; for(int j=i+1;j<arr.length;j++){ if(arr[j]
2015-09-26 17:03:24 286
原创 [笔试题]找数组中最长和为0连续子序列
输入:int 型数组由正数、负数、0组成输出:最长和为0的子序列例:输入:[3,0,-1,-2,-3,1,1,1,2,3,1,-2,-1]输出:9思路:原数组为A,长度为N 新建一个数组B[1...N+1],B[i]=A[i-1]+A[i-2]+A[1],B[1]=0 时间复杂度为O(n)
2015-09-25 21:42:30 5619 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人