
常见算法题
记录一些自己刷过的算法题
北京流年
每天进步一点点,不积跬步无以至千里
展开
-
求二叉树的最大深度
求二叉树的最大深度public class Depth{ public int maxDepth(TreeNode root){ if(root == null){ return 0; } int leftDepth = maxDepth(root.left); int rightDepth = maxDepth(root.right); return ...原创 2019-05-24 21:06:51 · 287 阅读 · 0 评论 -
链表的中间节点
题目:现有一个单链表[1,2,3,4,5],返回它的中间节点3class Solution { public ListNode middleNode(ListNode head) { ListNode fast = head; ListNode low = head; while(fast != nu...翻译 2019-05-20 15:58:29 · 198 阅读 · 0 评论 -
从二维数组中找出对应数的下标
从二维数组中找出对应数的下标,思路如下遍历整个二维数组,当前数组下标值不是要查询的值的时候,就让col++,然后判断col是否大于等于二维数组的col值,如果是,那么说明需要判断下一行了,也就让col=0,row++。搞定!public class TwoDimensionalArray { public static void main(String[] args) { int...原创 2019-05-07 09:33:41 · 6828 阅读 · 0 评论 -
java 有序链表删除重复元素
有一个有序链表,删除掉重复的元素。例如:[5,5,6,6,7,7,8,8]正确输出结果:[5,6,7,8]解决方法public class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}class Solution{ public ListNode deleteDup...原创 2019-01-28 11:10:56 · 927 阅读 · 0 评论 -
java 两个有序链表合并为一个有序链表
两个初始有序链表如下l1: 1---->2---->4l2: 1---->3---->4结果应该为:1---->1---->2---->3---->4---->4使用递归来解决这个题目是最简单的。代码如下class Solution { public ListNode mergeTwoList原创 2019-01-26 16:47:49 · 1179 阅读 · 0 评论 -
java 快速排序
快速排序更简单写法public class QuickSort { public static void main(String[] args) { int[] list = {99, 101, 999, 2, 7, 15, 90, 89, 22, 66, 80}; quickS(list, 0, list.length - 1); ...原创 2018-09-05 10:37:10 · 1469 阅读 · 1 评论 -
java面试算法之堆排序
/** * 堆排序 * 堆的概念:一个无序序列,{k1,k2,k3,k4,k5,k6,k7.......kn}, * 当(ki<k(2i+1)&&ki<k(2i+2)) || (ki>k(2i+1) && ki>k(2i+2))) * 第一步:先初始化堆,怎样初始化堆呢?循环完全二叉树中的第(n/2-1)个节点 *原创 2017-12-24 22:39:04 · 356 阅读 · 0 评论 -
java面试算法之快速排序
/** * 快速排序:通过一次排序将要排序的记录分割成两个独立的部分, * 其中一部分的所有记录 关键字值都比另外一部分的关键字值小, * 然后再按此方法分别对两个部分进行快速排序,整个排序可以使用递归进行 步骤: * 1:设置两个变量i,j,初值分别为low,high,分别表示 * 待排序序列的起始下标和终点下标 * 2:将第i个记录暂存到temp中,即temp = r[i] *原创 2017-12-31 11:09:42 · 839 阅读 · 0 评论 -
java算法面试题之一
题目:int values[] = {80099, 16114, 63108, 25032, 31044, 59069, 39099, 13110, 34101, 66120,19116, 72105, 70045, 38032, 41110, 12105, 75110, 27105, 1105, 9114,67117, 20101, 21100, 11原创 2017-12-22 18:21:41 · 2567 阅读 · 0 评论 -
java 面试算法之冒泡排序
前天去面试了,让我手写冒泡排序,我没写出来,真想抽自己两大嘴巴子,这么简单的冒泡排序都没写出来,太特么丢脸了。思路:第一个数和第二个数进行比较,如果第一个比第二个大,则把第一个的值赋给第二个,然后继续判断第二个与第三个的大小,如果第二个还大于第三个则把第二个的值赋给第三个数,这样一直进行比较,一次循环下来就能把最大的数排到最后,然后第二次还从第一个数开始,与第二个数进行比较,如果第一个数小于第二原创 2017-12-22 22:31:51 · 330 阅读 · 0 评论