
算法
GOF.
这个作者很懒,什么都没留下…
展开
-
Java中的位运算
位运算符主要针对二进制,主要有移位运算和逻辑运算移位运算:左移:操作符为<<,向左移动,右边的低位补0,左边高位舍弃,将二进制看做整数,左移1位就相当于乘以2。无符号右移:操作符为>>>,向右移动,右边的舍弃掉,左边补0。有符号右移:操作符为>>,向右移动,右边的舍弃掉,左边补的值取决于原来最高位,原来是1就补1,原来是0就补0,将二进制看做整数,...原创 2020-02-05 09:16:04 · 177 阅读 · 0 评论 -
树的层次遍历Java实现
思想本身并不复杂,每一次打印一个节点的时候,如果该节点有子节点,则把该节点的子节点放到一个队列的尾部。接下来到对队列的头部取出最早进入队列的节点放到ArrayList 中,重复前面的操作,直至队列中所有的节点都存到ArrayList中。代码如下:import java.util.ArrayList;/**public class TreeNode { int val = 0; ...原创 2020-02-04 19:43:36 · 1888 阅读 · 1 评论 -
二分查找递归与非递归Java实现
二分法是算法里的一个重要方法,很多算法都可以用这个思想去解决,所以一定要掌握。要使用它有一个前提条件:数组必须有序,递增或者递减;二分查找的优点:比较次数较少、查找速度快、平均性能好;二分查找的缺点:待查表为有序表,插入困难;由此延伸为顺序结构中,插入与删除比较困难;二分查找的思想:步骤一:首先确定整个查找区间的中间位置mid = (end - start)/2;步骤二:用待查关键字值...原创 2020-02-02 09:09:37 · 159 阅读 · 0 评论 -
求链表的倒数第n个节点
第一种解法:暴力求解 从第一个节点开始,统计当前节点后面的节点个数,如果大于N-1 移动到下一个节点,否则提示节点不足,直到后面的节点个数= N,这里不做详解第二种解法:两次遍历 先求链表长度len 再次遍历到len-n的位置时间复杂度O(n) + O(n) -> O(n),空间复杂度O(1)ListNode find2(ListNode head,int n ) { int l...原创 2019-08-03 22:15:56 · 329 阅读 · 0 评论 -
JAVA冒泡排序
冒泡排序的基本思想:通过对待排序序列从前向后,依次比较相邻元素的值,若发现逆序则交换,使值较大的数字逐渐往后移。待排序数组:int[] arr = {5,3,1,4,9,2};第1次找出最大的[3, 1, 4, 5, 2, 9]第2次找出最大的[1, 3, 4, 2, 5, 9]第3次找出最大的[1, 3, 2, 4, 5, 9]第4次找出最大的[1, 2, 3, 4, 5, 9]第5...原创 2019-08-21 17:43:06 · 113 阅读 · 0 评论 -
小明上学
小明是汉东省政法大学附属中学的一名学生,他每天都要骑自行车往返于家和学校。为了能尽可能充足地睡眠,他希望能够预计自己上学所需要的时间。他上学需要经过数段道路,相邻两段道路之间设有至多一盏红绿灯。 京州市的红绿灯是这样工作的:每盏红绿灯有红、黄、绿三盏灯和一个能够显示倒计时的显示牌。假设红绿灯被设定为红灯 r 秒,黄灯 y 秒,绿灯 g 秒,那么从 0 时刻起,[0,r) 秒内亮红灯,车辆不许通...原创 2019-09-12 16:48:03 · 186 阅读 · 0 评论