算法
mengmengdastyle
天地有情尽白发,人间无意了沧桑!
展开
-
算法之动态规划(Dynamic Programming)
1、介绍(1) 动态规划是解决多阶段决策过程最优化的一种有效的数学方法,他是美国学者Richard.bellman在1951年提出的,1957年他的专著《动态规划》的问世标志着运筹学的一个重要分支—-动态规划的诞生。 所谓多阶段决策问题是指这样一类问题,该问题的决策过程时一种在多个相互联系的阶段分别作出决策以形成序列决策的过程,而这些决策均是根据总体最优化这一共同的目标而采取的。 ...原创 2018-08-18 15:11:22 · 22322 阅读 · 0 评论 -
剑指Offer | 和为S的连续正数序列
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和...原创 2018-06-07 21:58:58 · 440 阅读 · 0 评论 -
剑指Offer | 不用加减乘除做加法
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。二、讲解三、代码public int Add(int num1,int num2) { BigIn...原创 2018-06-14 17:32:42 · 178 阅读 · 0 评论 -
剑指Offer | 求1+2+3+...+n
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。二、解法难点:不能使用乘除、for、while、if、else...原创 2018-06-14 17:27:26 · 160 阅读 · 0 评论 -
剑指Offer | 孩子们的游戏(圆圈中最后剩下的数)
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小...原创 2018-06-14 14:30:19 · 171 阅读 · 0 评论 -
剑指Offer | 扑克牌顺子
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“...原创 2018-06-14 10:47:45 · 121 阅读 · 0 评论 -
剑指Offer | 从上往下打印二叉树
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246 一、题目从上往下打印出二叉树的每个节点,同层节点从左至右打印。二、思路(1)Deque Deque是Queue的子接口,我们知道Queue是一种队列形式,而Deque则是双向队列,它支持从两个端点方向...原创 2018-05-29 23:26:08 · 241 阅读 · 0 评论 -
剑指Offer | 栈的压入、弹出序列
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246 一、题目输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出...原创 2018-05-29 22:01:38 · 125 阅读 · 0 评论 -
剑指Offer | 包含min函数的栈
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246 一、题目定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。二、思路主要理解一下 Iterator iterator = stack.iterator(); 的用法。三、代码i...原创 2018-05-29 21:30:10 · 168 阅读 · 0 评论 -
剑指Offer | 树的子结构
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)二、思路主要是一个完整思路 (1)如果root2为空,则返回false; 如果roo...原创 2018-05-28 21:48:17 · 170 阅读 · 0 评论 -
剑指Offer | 数组中只出现一次的数字
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 测试用例: [2,4,3,6,3,2,5,5] 对应输出应该为: “4,6” 暴力破解,就不解释了。讲一...原创 2018-06-04 21:22:57 · 157 阅读 · 0 评论 -
剑指Offer | 和为S的两个数字
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。二、思路(1)数列满足递增,设两个头尾用于做指向关系,i和j;若a...原创 2018-06-07 22:06:31 · 150 阅读 · 0 评论 -
剑指Offer | 左旋转字符串
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输...原创 2018-06-07 22:16:09 · 150 阅读 · 0 评论 -
快速排序的两种实现(java)
用递归方式去做,这个比较明确,下面针对具体的方法分两种情况(1)第一种 做两个游标,找!从前面找到比标准值大的数,从后面找到比标准值小的数,然后交换位置。以此重复。。。 具体步骤: 1,定义i=0,j=A.lenght-1,i为第一个数的下标,j为最后一个数下标 2,从数组的最后一个数Aj从右往左找,找到第一小于key的数,记为Aj; 3,从数组的第一个数Ai 从左往右找...原创 2018-08-15 11:24:06 · 717 阅读 · 0 评论 -
8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案
原文地址:https://www.cnblogs.com/newflydd/p/5091646.html八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的...转载 2018-06-20 16:06:58 · 226 阅读 · 0 评论 -
经典算法合集
经典算法合集。共勉啊亲~! 留着逐步攻克!!!======================================================== 排序 排序算法 冒泡排序法 起泡法 鸡尾酒排序 桶排序 计数排序 归并排序 排序二叉树 鸽巢排序 基数排序 选择排序法 希尔排序 堆排序 快速排序算法 插入排序法 树形选择排序========...原创 2018-06-20 14:57:10 · 1500 阅读 · 0 评论 -
剑指Offer | 把字符串转换成整数
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数值表达则...原创 2018-06-19 10:08:43 · 207 阅读 · 0 评论 -
剑指Offer | 把数组排成最小的数
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。二、思路(1) 重写Co...原创 2018-06-01 22:54:21 · 147 阅读 · 0 评论 -
剑指Offer | 整数中1出现的次数(从1到n整数中1出现的次数)
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们...原创 2018-06-01 22:33:21 · 140 阅读 · 0 评论 -
剑指Offer | 连续子数组的最大和
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应...原创 2018-06-01 22:17:34 · 123 阅读 · 0 评论 -
剑指Offer | 最小的K个数
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。二、思路(1) Arrays.sort(); 用这个方法排序后进行输出;...原创 2018-05-31 23:22:05 · 161 阅读 · 0 评论 -
剑指Offer | 数组中出现次数超过一半的数字
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0...原创 2018-05-31 21:51:21 · 157 阅读 · 0 评论 -
剑指Offer | 翻转单词顺序列
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”...原创 2018-06-08 00:15:54 · 156 阅读 · 0 评论 -
剑指Offer | 平衡二叉树
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目输入一棵二叉树,判断该二叉树是否是平衡二叉树。二、讲解(1)平衡二叉树 平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一棵空树...原创 2018-06-03 16:24:48 · 190 阅读 · 0 评论 -
剑指Offer | 二叉树的深度
一、题目 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 二、思路 (1) 递归的思想适合解决这种问题。 (2) A ? B :C (如果A为真执行B否则执行C) 三、代码/**public class TreeNode { int val = 0; TreeNode left = null;...原创 2018-06-03 16:15:16 · 133 阅读 · 0 评论 -
剑指Offer | 旋转数组的最小数字
一、题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。二、思路(1)注意点 旋转数组:{3,4,5,1,2}为{1,2,3,4,...原创 2018-05-14 01:22:47 · 158 阅读 · 0 评论 -
剑指Offer | 链表中倒数第k个结点
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246 一、题目 输入一个链表,输出该链表中倒数第k个结点。 二、思路 (1) 先写出步骤,将各种情况考虑到 //1.为空 //2.拿到总长度 //3.大于总长度时,返回空...原创 2018-05-19 21:45:15 · 130 阅读 · 1 评论 -
剑指Offer | 用两个栈实现队列
一、题目 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 二、解析三、代码实现import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Intege原创 2018-05-13 01:28:31 · 128 阅读 · 0 评论 -
剑指Offer | 重建二叉树
一、题目 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 二、解析三、代码...原创 2018-05-13 01:24:15 · 172 阅读 · 0 评论 -
剑指Offer | 从尾到头打印链表
一、题目 输入一个链表,从尾到头打印链表每个节点的值。 二、解析 (1)什么是链表? 单向链表(单链表)是链表的一种,它由节点组成,每个节点都包含下一个节点的指针,下图就是一个单链表,表头为空,表头的后继节点是”结点a1”,”节点a1”的后继结点是”节点a2”(数据为10的结点), (2)此题含义 因为单向链表智能从上一个节点a1查询到下一个节点a2,所以不能从后向前查找。 (3...原创 2018-05-12 23:42:51 · 151 阅读 · 0 评论 -
剑指Offer | 调整数组顺序使奇数位于偶数前面
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246 一、题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 二、思路 (1)示例说明 输入数...原创 2018-05-18 23:35:30 · 85 阅读 · 0 评论 -
剑指Offer | 替代空格
一、题目 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 二、解析 (1)char的理解,需要把字符串中的字符一个个拿出来判断,此时就用到了char。String提供了拿取的方法:String.charAt(i) (2)不为空则拼接,为空则拼接%20 三、java代码实现 pub...原创 2018-05-10 22:48:06 · 138 阅读 · 0 评论 -
剑指Offer | 二维数组中的查找
一、题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 二、思路 (1)选择一个基准(即开始点),我们选择左下角的 13 (2)对比这个基准,主要判断有两种情况: 比13大,则向右查找; 比13小,则向上查找; (3...原创 2018-05-10 21:27:08 · 229 阅读 · 0 评论 -
剑指Offer | 数值的整数次方
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。二、解析三、代码...原创 2018-05-17 09:56:21 · 168 阅读 · 0 评论 -
剑指Offer | 矩形覆盖
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。二、思路(1)注意点 exponent分三种情况:大于零,等于零和小于零...原创 2018-05-16 23:18:54 · 147 阅读 · 0 评论 -
剑指Offer | 斐波那契数列
一、题目大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39二、思路(1)斐波那契数列 它指的是这样一个数列:0,1,1,2,3,5,8,13……从这组数可以很明显看出这样一个规律:从第三个数开始,后边一个数一定是在其之前两个数的和。在数学上,斐波纳挈数列可以以这样的公式表示:F(0) = 0,F(1) = 1, F(n) = F(n...原创 2018-05-14 01:39:34 · 248 阅读 · 0 评论 -
剑指Offer | 跳台阶
一、题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 二、思路 (1)最好用递归方法三、代码public class Solution { public int JumpFloor(int target) { if(target==-1) return 0; else if...原创 2018-05-14 01:45:37 · 153 阅读 · 0 评论 -
剑指Offer | 数字在排序数组中出现的次数
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目统计一个数字在排序数组中出现的次数。二、思路(1) 最简单方法,一个一个查找三、代码public int GetNumberOfK(int [] array , int k) { ...原创 2018-06-03 16:06:38 · 137 阅读 · 0 评论 -
剑指Offer | 两个链表的第一个公共结点
一、题目输入两个链表,找出它们的第一个公共结点。二、思路(1) 两个链表是单向链表,如果两个链表有公共节点,那么这两个链表从某一节点开始,它们的Next都指向同一个节点,之后它们所有的节点都是重合的,不可能再出现分叉。所以拓扑形状看起来是Y型。 (2) 首先遍历两个链表得到它们的长度,就能知道哪个链表比较长,以及长的链表比短的链表多几个节点。 在第二次遍历的时候,先在较长的...原创 2018-06-03 15:40:59 · 165 阅读 · 0 评论 -
剑指Offer | 第一个只出现一次的字符
做了个剑指Offer的题目目录,链接如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246一、题目在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置二、思路(1) 将String转成char型, (2) new一个list ...原创 2018-06-02 23:22:59 · 152 阅读 · 0 评论