
算法基础
文章平均质量分 62
登徒先生
这个作者很懒,什么都没留下…
展开
-
二维数组的查找
题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 最简单就是从头到尾遍历一遍,假设数组长度为x*y,从头遍历复杂度为O(x*y)。但是该数组每行从左到右递增,每列从上到下递增,这样左上角的数最小,右下角的数最大,从这两个点开始遍历,路径都不确定。还有两个原创 2018-01-23 01:04:32 · 109 阅读 · 0 评论 -
求链表公共结点
题目描述输入两个链表,找出它们的第一个公共结点。思路:公共结点前两链表的结点数不一定相等,公共结点后两链表结点数一样。先把长度差补上,然后开始同时遍历。代码实现:public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }...原创 2018-02-25 22:28:51 · 492 阅读 · 0 评论 -
旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。方法1直接遍历,时间复杂度O(n):public class Solution { public int ...原创 2018-03-01 23:31:36 · 160 阅读 · 0 评论 -
链表中倒数第k个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。利用快慢指针的思想,先让快指针移动k次,然后快指针和慢指针同时往后移动,当快指针遍历完链表,此时慢指针正好处于倒数第k个结点。代码实现:/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val...原创 2018-02-12 20:56:41 · 233 阅读 · 0 评论 -
二叉树的层序遍历
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。根据题目描述,其实就是求二叉树的层序遍历结果。思路:遍历当前节点,使用队列来储存子节点,然后从队列取下一个要遍历的节点,将该节点的子节点放入队列...递归下去,最终得到遍历结果。实现代码:import java.util.ArrayList; /** public class TreeNode { int val = 0; ...原创 2018-01-29 00:08:44 · 126 阅读 · 0 评论 -
魔法币
小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。 魔法机器1:如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币 魔法机器2:如果投入x个魔法币,魔法机器会将其变为2x+2个魔法币 小易采购魔法神器总共需要n个魔法币,所以小易只能通过两台魔法机器产生恰好n个魔法币,小易需原创 2018-01-20 01:53:41 · 193 阅读 · 0 评论 -
变态跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 转换一下题目的意思,如图。 1.共有n级的台阶,每一个格子代表一个台阶,把每次跳完一步的落脚点记为"1",没停留的台阶记为"0"; 2.因为最后肯定会跳在最后一格上,所以第n个格子必定为"1"。 根据条件1和条件2,其实就是原创 2018-02-02 01:22:28 · 123 阅读 · 0 评论 -
从尾到头打印链表
题目描述 输入一个链表,从尾到头打印链表每个节点的值。 分两次遍历,第一次遍历计算链表长度确定输出数组的长度,第二次遍历把节点值从数组末尾往前放入。 代码实现:/** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int v原创 2018-01-25 04:30:46 · 117 阅读 · 0 评论 -
斐波那契数列
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 列一下前几级台阶跳法: 数学归纳法,第n级台阶的跳法共有(n-2)+(n-1),典型的斐波那契数列。 实现代码: public class Solution { public int JumpFloor(int target) { int f1 =原创 2018-01-31 00:29:02 · 151 阅读 · 0 评论 -
二叉树的后序遍历
节点和树类:public class TreeNode { Integer value; TreeNode left = null; TreeNode right = null; public TreeNode() { } public TreeNode(Integer val) { this.value = val; ...原创 2018-03-13 23:00:10 · 334 阅读 · 0 评论