- 博客(16)
- 收藏
- 关注
原创 旋转数组的最小数字
题目牛客网题目地址代码public class Solution { public int minNumberInRotateArray(int [] array) { if(array.length == 0){ return 0; } int first = 0; int last = array.length-1; while(first < last){
2020-12-25 13:52:41
136
原创 斐波那契数列
题目牛客网题目地址代码public int Fibonacci(int n) { int[] result={0,1}; if(n<2){ return result[n]; } int fibNMinusOne = 1; int fibNMinusTwo = 0; int fibN = 0; for(int i =2; i<=n; i+
2020-12-23 23:55:12
209
原创 用2个栈实现队列
题目牛客网题目地址代码public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void push(int node) { stack1.push(node); } public int pop
2020-12-22 22:47:33
211
原创 二叉树的下一个节点
题目牛客网题目地址代码第一种解法://不用先知道几个条件的简单版算法 static ArrayList<TreeLinkNode> list = new ArrayList<>(); public TreeLinkNode GetNext(TreeLinkNode pNode){ TreeLinkNode par = pNode; while(par.next != null){ par = par.ne
2020-12-22 01:13:31
309
原创 重建二叉树
题目牛客网题目地址代码import java.util.Arrays;public class Solution { public TreeNode reConstructBinaryTree(int [] pre,int [] in) { if (pre.length == 0 || in.length == 0) { return null; } TreeNode root = new TreeNode(pre[0]
2020-12-21 17:51:12
104
原创 从尾到头打印链表
题目牛客网题目地址思路不要普通地想着把链表逆转,巧妙地用数据结构中的栈来解决问题,或者通过栈结构的形式,由于递归本身就是一个栈结构,所以可以直接使用递归方法来更高效地解决这个问题。1.新建一个ArrayList result来作为返回数组。2.进入主方法,如果当前结点不为空,就将当前结点的值加入到result中。3.如果下一个节点不为空,就递归调用主方法。4.递归结束后返回result。代码public class Solution { ArrayList<Integer&g
2020-12-20 21:50:34
103
原创 字符串替换
题目牛客网题目地址思路求出str的空格数目=》numberOfBlank算出原字符串的长度originalLength,-1就是结尾下标oldIndex。通过originalLength加上空格数*2就求出新字符串的长度newLength,-1就是结尾下标newIndex。这时也顺便将str的长度扩展为newLength。从oldIndex开始往前遍历,遇到空格就将newIndex的当前3个下标改为‘0’、‘2’、‘%’,然后newIndex递减;如果遇到字符就将其复制给当前newIndex
2020-12-19 01:43:09
522
1
原创 二维数组中的查找(数组中大小有规律)
题目https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e?tpId=13&&tqId=11154&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking思路心得如图所示,可以从二维数组的右上角第一个元素开始,与目标值进行比较判断,如果目标值小于当前值(即图中蓝圈的值),就说明我们接下来只需查找
2020-12-17 22:55:51
347
原创 基数排序算法(桶排序的扩展)
概念基数排序(radix sort)属于稳定性的排序,将整数按位数切割成不同的数字,然后按每个位数分别比较。将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。示意图核心算法流程图核心算法代码//基数排序方法 public static void radixSort(int[] arr) { //根据前面的推导过程,我们可以得到最终的基数排序代码 //1. 得
2020-12-08 15:09:17
247
原创 归并排序算法
前言归并排序算法咋一看和快排很像,也是采用经典的分治策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)阶段就是将分的阶段得到的各答案“修补”在一起,即分而治之)。但是它的处理顺序与快排还是有些不同的。概念主要过程就是先将一个数组不停二等分到最小单位,再将其逐一排序再组合成一个完整的有序数组。示意图总体示意图:“治”阶段(即将2个排好的数组拼成一个大的有序数组)核心算法流程图#核心算法代码//分+合方法 public static void mer
2020-12-08 03:48:08
1060
原创 交换排序--快速排序算法
前言快速排序是一种基于分治(解决问题的一种处理思想),递归(一种编程技巧)的一类排序算法。主要操作就是取中轴值,然后将小于中轴值的数放左边,大于的放右边,然后通过递归加快处理效率,最终完成排序。概念快排是对冒泡排序的一种改进。通过一趟排序将要排序的数据分割成独立的两个部分,其中一部分的所有数据都比另外一部分的所有数据都要小。然后再按此方法对这两部分数据分别进行快排,整个排序过程递归进行。示意图核心算法流程图核心算法代码public static void quickSort(int[] a
2020-12-07 17:11:10
276
原创 插入排序--希尔排序算法
前言希尔排序算法就是一个叫希尔的人发明的直接插入排序算法的改进版。因为当需要查入的数刚好比较小,后移的次数就会增多,效率就会下降。所以希尔排序改进了这一缺点,用增量分组的方法。思路把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量减少,每组就包含越来越多有序记录,当增量减到1时,整个文件就变成1组,排序也就完成。核心算法流程图对有序序列进行插入时可以采用交换法或者移动法。核心算法代码交换法:public static void shellSort(int[] arr
2020-12-05 19:14:48
720
1
原创 插入排序--直接插入排序
前言直接插入排序就是将一个无序数组分成有序和无序两个部分,然后在无序部分寻找合适的值插入到有序数组中,最终形成一个有序数组。思路需要注意一共进行了6-1=5趟插入,即数组中有n个元素,就进行n-1趟插入,然后每一次插入需要比较的元素数量都在递减,有序部分从1慢慢增加到n,而无序部分从n-1减少到0。核心算法流程图核心算法代码//插入排序 public static void insertSort(int[] arr) { int insertVal = 0; int insertI
2020-12-03 22:20:27
348
原创 选择排序--简单选择排序算法
前言选择排序也是属于八大算法中交换排序系列的一个比较简单的算法。主要就是选择一趟循环中最小的元素,然后将其放到对应的下标中。概念第一次:从arr【0】到arr【n-1】中选取最小值,然后与arr【0】交换。第二次:从arr【1】到arr【n-1】中选取最小值,然后与arr【1】交换。…依次类推,直到第n-1次:从arr【n-2】到arr【n-1】中选取最小值,然后与arr【n-2】交换。思路核心算法流程图核心代码//选择排序 public static void selectSo
2020-12-02 14:36:39
760
2
原创 交换排序--冒泡排序算法
前言冒泡排序可以说是八大排序算法中最为基础的一个算法,所以我决定先从冒泡排序入手,一步步深入了解算法并将其转化为知识输出。这是八个排序算法系列的第一章。我会按照交换排序、插入排序、选择排序、归并排序和基数排序5个大类来理解八大排序算法。概念冒泡排序的原理很简单,就是将一个数组中的序列从下标小到大开始,依次比较相邻元素的值,如果发现左边的值大于右边的值,就将其交换,让较大的值移到当前轮次的最末端,就像气泡冒出一样。思路注意事项一共进行了(5-1)即array.length-1趟排序。每一趟
2020-12-01 22:42:29
296
2
原创 使用eclipse新建一个javaweb项目
第一步 在eclipse中新建一个file->new->other->找到web目录->dynamic web project第二步 在target runtime中选择tomcat的版本,其他的按默认进行第三步 创建一个package explorer视图,window->show views->java->package explorer第四步 在pa...
2018-03-19 18:22:53
725
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅