算法
充电实践
极牛网、大牛家平台专家,资深IT工程师,也是创业路上的一员。对App开发,android和iOS均有深入研究。如果对我的文章感兴趣,请在微信公众号中搜索“充电实践”,关注我。
展开
-
跟我一起学算法系列1---Two Sum(java)
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the sam原创 2017-09-16 20:40:46 · 340 阅读 · 0 评论 -
跟我一起学算法系列2---Add Two Numbers(java)
You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return i原创 2017-09-18 22:13:45 · 403 阅读 · 0 评论 -
跟我一起学算法系列3---判断数组中是否含有某个整数
1.题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。2.算法分析由于二维数组是排好序的,从左到右,从上到下,因此,可以借助这个特点。从最后一行,第一列,开始遍历目标数。如果目标数比这个数大,那么继续从第二列开始遍历最后一行。如果目标数比这个数小,那么原创 2017-11-06 22:28:15 · 405 阅读 · 0 评论 -
跟我一起学算法系列4---替换空格
1.题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。2.算法分析java实现该功能可以直接使用replace类函数,然而我们从算法的角度分析,可以先遍历统计出字符串中空格的个数,假设为n,替换空格之后的字符串长度在原有长度的基础上增加了2n。因此新的字符串长度确原创 2017-11-07 23:18:54 · 227 阅读 · 0 评论 -
跟我一起学算法系列5---从尾到头打印链表
1.题目描述输入一个链表,从尾到头打印链表每个节点的值。2.算法分析这个题目有两种方式可以解。一种方式是采用递归,链表的首节点递归,直到最后一个节点先添加到list里。第二种方式是利用Stack的特殊性,先进后出,先将所有节点从头到尾依次添加到栈,然后依次出栈。3.代码实例(1)递归ArrayList mList = new ArrayList();public ArrayList printL原创 2017-11-19 18:17:24 · 215 阅读 · 0 评论 -
跟我一起学算法系列6---重建二叉树
1.题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。2.算法分析首先,我们要理解什么是前序和中序遍历。在二叉树的前序遍历序列中,第一个数字一定是树的根结点的值,然后是左子树、右子树。而在中原创 2017-12-31 17:53:18 · 190 阅读 · 0 评论 -
跟我一起学算法系列7---用两个栈实现队列
1.题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。2.算法分析首先我们需要弄清楚两个概念,栈是先进后出,队列是先进先出。概率有了,那么仔细一分析发现栈和队列刚好相反,那么我们就可以在入栈的时候,我们将它全放进栈1中,当需要出栈的时候,我们将栈1的数据出栈,并放到栈2中,然后再将栈2依次出栈。因此,入栈的时候,只需要使用pop方式入栈...原创 2018-10-03 16:48:49 · 179 阅读 · 0 评论 -
跟我一起学算法系列9---旋转数组的最小数字
1.题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。前提条件:给出的所有元素都大于0,若数组大小为0,请返回0。2.算法分析非减排序数组旋转之后的数组,实际上可以划分成两个有序的子数组,前面子数组的元素大小...原创 2018-10-14 18:09:23 · 160 阅读 · 0 评论