
算法
A coding monkey
这个作者很懒,什么都没留下…
展开
-
剑指Offer算法
1、在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 public static boolean Find(int target, int [][] array) { int rows=array.length; int columns=array[0].len...转载 2018-03-07 20:02:44 · 225 阅读 · 0 评论 -
打印出二叉树中结点值的和为输入整数的所有路径
输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下si一直到叶结点所经过的结点形成一条路径。思路:这道题的思路采用递归算法来解答,就是采用对树的先序遍历,遍历整个树,每遍历一个节点,将当前节点值加入临时存储节点的list中,更新sum,检查目标值并判断是否为叶子节点,如果条件判断正确,则将当前序列加入到结果集中。然后遍历左子树和右子树...原创 2018-07-24 11:15:40 · 833 阅读 · 0 评论 -
动态规划
动态规划把复杂问题分解成相对简单的子问题来求解的一种方法。其常常适用于最优子结构和重叠子问题。总体思想于分治法类似,将复杂问题分解成若干个子问题,先求子问题的解,然后从子问题的解得出复杂问题的解。但是与分治法不同的是,动态规划得到的子问题,往往不是相互独立的,每个子问题都可能有联系,比如对于重叠子问题来说,已经经过计算得出结果的子问题,当再次需要时,就不用计算,直接获取就行了,避免了大...原创 2018-07-20 08:54:17 · 181 阅读 · 0 评论 -
读入一个字符串str,输出字符串str中的连续最长的数字串
思路:定义一个maxLength变量用来存储最长的数字串的个数,定义一个count用来记录遍历过程中数字个数,如果count大于maxLength,将maxLength的值更改为count,定义一个end变量,用来存储数字串的最后一个数字的位置,最后只需要用字符串的subtring()方法截取字符串就行了。class Main{ public static void main(String...原创 2018-07-25 18:18:10 · 2082 阅读 · 2 评论 -
复杂链表的复制
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。下面看一看时间复杂度为O(N)的复杂链表复制算法。假如被复制的链表:思路:分3步;1、将复制的节点插入到对应节点的后面,形成一个新的链表。2、复制随机节点,通过原节点找到随机节点的位置 3、拆分链表,将原链表与新链表进行拆...原创 2018-07-26 15:38:43 · 164 阅读 · 1 评论