
数据结构
喝粥也会胖的唐僧
这个作者很懒,什么都没留下…
展开
-
归并排序的java实现(超详解)
归并排序,见名知意,就是递归+合并原理:使用递归的手段,达到分割的目的,在分割后进行合并,合并也是递归的,这就是这里的双向过程都是递归进行的,结果如图:示例(实例):以一下一串数字为例,首先进行拆分,然后合并,在合并的过程,进行排序,这里需要说明的是,递归在整个过程中都是存在的,不是单单拆分和合并存在递归。特别是在合并的过程中的排序不是那么简单,在采用专门合并两个有序数组的方式...原创 2018-11-01 21:01:32 · 2169 阅读 · 0 评论 -
输入一个整数,输出该数二进制表示中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。代码:public class Solution { public int NumberOf1(int n) { int count=0; int index=1; while(index!=0){ if((n&index)!...原创 2019-03-10 21:01:02 · 1261 阅读 · 0 评论 -
斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39public class Solution { public int Fibonacci(int n) { if(n==0){ return 0; }else if(n==1){ ...原创 2019-03-10 10:49:24 · 394 阅读 · 0 评论 -
写一个函数,求两个整数之和,要求在函数体内不得使用四则运算符号
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。代码:public class Solution { public int Add(int num1,int num2) { if(num2==0){ return num1; } int sum=num1^...原创 2019-03-10 10:40:54 · 587 阅读 · 0 评论 -
求1+2+3+...+n,要求不能使用乘除法
题目描述求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)代码:public class Solution { public int Sum_Solution(int n) { int sum=n; boolean bool=(n!=0) &&am...原创 2019-03-09 22:13:54 · 1144 阅读 · 0 评论 -
二叉树的镜像java
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5...原创 2019-03-09 21:25:23 · 829 阅读 · 0 评论 -
表达式合法判断(去哪儿面试题)
写一段代码,判断一个包括'{','[','(',')',']','}'的表达式是否合法(注意看样例的合法规则。)给定一个表达式A,请返回一个bool值,代表它是否合法。测试样例:"[a+b*(5-4)]*{x+b+b*(({1+2)}}"返回:true(其实仔细看这个其实是false,题目给错了)package base001;import java.util.*...原创 2019-03-09 20:56:46 · 996 阅读 · 2 评论 -
堆排序(java)
是直接利用堆结构的特性进行构造的直接上代码:package Heap;public class HeapSort { public static void heapSort(int[] arr) { if (arr.length<2||arr==null) { return; } //根据待排序数组生成堆结构 for (int i = 0; i ...原创 2018-12-09 20:45:25 · 444 阅读 · 0 评论 -
快速排序(荷兰国旗java)
经典的快速排序是思路如下:(1)就是将弱化版的荷兰国旗问题中的num,替换成了数组的最后一个位置的数字,即根据数组的最后的一个数字,作为比较对象,然后分出大于和小于部分(2)然后将左右两个子数组分别进行递归首先我们看看弱化版的荷兰国旗问题:给定一个数组arr, 和一个数num, 请把小于等于num的数放在数组的左边, 大于num的数放在数组的右边。要求额外空间复杂度O(1), 时...原创 2018-12-09 16:09:08 · 725 阅读 · 0 评论 -
荷兰国旗问题(java)
问题描述:给定一个数组arr, 和一个数num, 请把小于num的数放在数组的左边, 等于num的数放在数组的中间, 大于num的数放在数组的右边。要求额外空间复杂度O(1), 时间复杂度O(N)思路:(1)首先定义3个游标,less是用来标明其左边是小于num,初始位置为L-1;more是用来标明其右是大于num,初始位置为R+1;current是用来标明目前运动到什么位置了,初始...原创 2018-12-09 10:31:22 · 584 阅读 · 0 评论 -
小和问题(java)
之前写过归并排序,但是一直没有没有进行应用,啃了一下左神的算法,确实思路比我们第一次做好很多,具体问题描述如下:小和问题在一个数组中, 每一个数左边比当前数小的数累加起来, 叫做这个数组的小和。 求一个数组的小和。例子:[1,3,4,2,5]1左边比1小的数, 没有;3左边比3小的数, 1;4左边比4小的数, 1、 3;2左边比2小的数, 1;5左边比5小的数, 1、 3、 ...原创 2018-12-08 21:13:26 · 1844 阅读 · 0 评论 -
希尔排序超详解及其java实现
希尔排序虽然已经十分古老了,但其思想确实十分值得我们学习,非常的巧妙虽然很多资料说希尔排序是叫shell的人提出来的,我个人却十分好奇,shell的英文好意为壳的意思,感觉希尔排序的思想就像一层层的壳一样,从内到外越来越大,当然这是我胡诌的,具体原理如下(用的一个实例进行说明的):原理:以数组{2,7,4,1,5,3,8,6,9,11,10}为例进行说明:一般来说步长为除以2,有的...原创 2018-11-04 18:42:41 · 2004 阅读 · 3 评论 -
将一个字符串中的每个空格替换成
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。public class Solution { public String replaceSpace(StringBuffer str) { int index=str.indexOf(" "); ...原创 2019-03-10 23:00:48 · 726 阅读 · 0 评论