
传统算法
子林Android
You are more than what you have been now.
展开
-
CCF试题--最大的矩形
问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。请找出能放在给定直方图里面积最大的矩形,它的边要与坐标轴平行。对于上面给出的例子,最大矩形如下图所示的阴影部分,面积是10。输入格式 第一行包含一个整数n,即矩形的数量(1 ≤ n ≤ 1原创 2016-09-10 13:08:42 · 1099 阅读 · 0 评论 -
LeetCode(111)Minimum Depth of Binary Tree
题目描述Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.Note: A leaf is a node with no c...转载 2018-07-26 10:25:08 · 182 阅读 · 0 评论 -
C++实现二叉树前、中、后序递归与非递归遍历
前序遍历根—–左—–右递归前序遍历void preOrder1(BinTree *root) //递归前序遍历 { if(root!=NULL) { cout<<root->data<<" &amp转载 2018-07-31 20:47:02 · 523 阅读 · 3 评论 -
leetcode两数三数四数之和
文章目录1. 两数之和1.1 题目描述1.2 解题思路1.3 Java代码2. 三数之和2.1 题目描述2.2 解题思路2.3 Java代码3. 四数之和3.1 题目描述3.2 解题思路3.3 Java代码leetcode两数之和、三数之和、四数之和三部曲1. 两数之和1.1 题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返...原创 2019-02-15 16:36:56 · 231 阅读 · 0 评论 -
leetcode回文串三部曲
文章目录1. 最长回文子串题目描述思路Java代码2. 回文子串题目描述思路Java代码3. 最长回文自序列题目描述思路Java代码总结3道关于“回文串”的leetcode编程题最长回文子串回文子串最长回文子序列1. 最长回文子串题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”...原创 2019-02-18 21:20:00 · 214 阅读 · 0 评论 -
leetcode旋转五部曲
这里总结leetcode中关于“旋转的题目”旋转链表旋转数组旋转数字旋转链表题目描述给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出原创 2019-03-01 00:02:41 · 167 阅读 · 0 评论 -
链表排序(冒泡、选择、插入、快排、归并)的Java实现
文章来源:http://www.cnblogs.com/TenosDoIt/p/3666585.html排序问题是code界老生常谈的话题了。总结一下,主要有两种数据结构上的排序:数组、链表。数组的常用排序算法及实例戳这里:数组的七种经典排序算法Java实现本文是对链表的常用排序算法的示例,当然也是Java实现。“Speaking is easy, Show me the code ...转载 2019-03-05 21:32:52 · 1194 阅读 · 0 评论 -
数组七大经典排序算法(冒泡、插入、希尔、快排、选择、归并、堆)Java实现
这是一份常用排序算法的Java代码实现,可运行。算法包括:冒泡排序、插入排序、希尔排序、快速排序、选择排序、归并排序、堆排序。话不多说,上代码:package test1;public class Test { /** * 交换数组中两个数 * @param nums * @param i * @param j */ ...原创 2018-07-14 18:55:59 · 546 阅读 · 0 评论 -
leetcode反转链表及回文链表
文章目录反转链表(简单的)题目描述思路Java代码回文链表题目描述思路Java代码反转链表(简单的)先来个简单的反转链表,用处大大地,后面的其他链表题会用到反转链表这个步骤哦题目描述反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路递归法递归的终止是...原创 2019-02-27 10:51:51 · 339 阅读 · 0 评论 -
二叉树的层次遍历两部曲
二叉树的层次遍历,用到了队列这种数据结构。1. 二叉树层次遍历(一)思路是:先将跟节点入队列,当队列不为空,每次从队列中取出一个节点,访问它的同时将它的左右子树入队列。(当然了,只有它的子树不为空时才入队列)题目描述给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],3/ \9 20...原创 2019-03-07 02:30:51 · 209 阅读 · 0 评论 -
回溯法及其应用--八皇后问题
https://www.cnblogs.com/bigmoyan/p/4521683.htmlhttps://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741376.htmlhttps://blog.youkuaiyun.com/qq_32400847/article/details/51474105#commentBox文章目录1. 回溯法2. ...转载 2019-04-08 20:45:18 · 322 阅读 · 0 评论 -
leetcode典型的动态规划题三部曲
文章目录1. 最小路径和题目描述思路Java代码2. 不同的路径一题目描述思路Java代码3. 不同的路径二题目描述思路Java代码本文总结下leetcode经典的三道动态规划题:最小路径和、不同的路径1、不同的路径21. 最小路径和题目描述给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:...原创 2019-04-03 14:17:11 · 1177 阅读 · 0 评论 -
LeetCode108. Convert Sorted Array to Binary Search Tree
题目描述Given an array where elements are sorted in ascending order, convert it to a height balanced BST.题目只有一句话:把一个按升序排列的数组,装换成一个平衡二叉树。思路要满足一下条件,对于没有排序的数组来说,就比较麻烦,但对于已排序的数组,大都用二分递归转换方法来处理。算法逻辑很...转载 2018-07-25 18:49:44 · 197 阅读 · 0 评论 -
剑指offer--把二叉树打印成多行
题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路乍一看和上一题很像,都是从左到右输出是不是就可以用层次遍历啦? 并不是!人家要求是每一层输出一行,一行一行的输出。而层次遍历是每遍历到一个就输出一个。 所以,还是得和上一题类似,用两个容器(队列)保存遍历的节点,交替使用。C++代码/*struct TreeNode { int v...原创 2018-07-14 10:04:45 · 222 阅读 · 0 评论 -
剑指offer--按之字形打印二叉树
题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路看似简单,以为是层次遍历就行了,实则不然啊。 需要用到两个栈,交替使用,才能做到上一层从左到右,下一行从右到左。。。C++代码/*struct TreeNode { int val; struct...原创 2018-07-14 09:31:29 · 217 阅读 · 0 评论 -
CCF--节日
试题编号: 201503-3 试题名称: 节日 时间限制: 1.0s 内存限制: 256.0MB 问题描述 有一类节日的日期并不是固定的,而是以“a月的第b个星期c”的形式定下来的,比如说母亲节就定为每年的五月的第二个星期日。 现在,给你a,b,c和y1, y2(1850 ≤ y1, y2 ≤ 2050),希望你输出从公元y1年到公元y2年间的每年的a月的原创 2016-09-10 23:15:16 · 355 阅读 · 0 评论 -
经典算法题目收集
1. 交换两个数,不使用中间变量数学法:a = a+b;b = a-b;a = a-b;亦或法a = a^b;b = a^b;a = a^b;未完待续…………原创 2018-03-15 23:54:53 · 588 阅读 · 0 评论 -
剑指offer编程题《重建二叉树》
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路我们都知道,通过前序遍历和中序遍历或后序遍历和中序遍历可以唯一确定一棵二叉树。 前序:根、左、右 中序:左、根、右 后序:左、右、...原创 2018-04-22 19:03:48 · 237 阅读 · 0 评论 -
剑指offer编程题“递归三部曲”
剑指offer上的递归题三部曲:斐波那契数列、跳台阶、变态跳台阶1. 《斐波那契数列》题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39思路没什么好说的,递归的典型题啦。 什么?斐波那契数列是啥?这都不知道?自己面壁3秒中吧… 就是前两个数相加等于后面的数,以此类推… 就是这样的数字序列:1 1 2 3 5 ...原创 2018-04-23 21:55:22 · 359 阅读 · 0 评论 -
剑指offer编程题--寻找两个链表公共结点
题目描述输入两个链表,找出它们的第一个公共结点。思路先分别计算两个链表的长度,然后对齐链表(就是把比较长的那个链表的指针先往前走几步,以便赶上短的那个),然后同步遍历两个链表,这样肯定会同时到达公共结点。Java代码public class Solution { public ListNode FindFirstCommonNode(ListNode pHead1, L...原创 2018-07-12 10:10:25 · 174 阅读 · 0 评论 -
剑指offer编程题--求二叉树最大深度与最小深度
题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路递归思想,分别递归求解左右子树深度,总深度=左右子树中较深的那个深度+1Java代码/**public class TreeNode { int val = 0; TreeNode left = null; TreeN...原创 2018-07-12 10:35:29 · 568 阅读 · 0 评论 -
剑指offer编程题--判断是否为平衡二叉树
题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。思路递归思想。先看根节点是否是平衡的,再看左右子树是否是平衡的。如果都是平衡的,则整个树就是平衡的。平衡的判别条件是,左右子树的深度之差不超过1至于深度的计算,刚好就用到了前面一题求二叉树的深度了~Java代码public class Solution { public boolean IsBalan...原创 2018-07-12 10:46:08 · 264 阅读 · 0 评论 -
剑指offer--求1+2+3+...+n,要求不能使用乘除法、while、for、if 、else、switch、case等关键字
题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)思路递归求解C++代码:class Solution {public: int Sum_Solution(int n) { int sum = 0; return add(n,sum);...转载 2018-07-13 10:07:11 · 380 阅读 · 0 评论 -
剑指offer--不用加减乘除做加法
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路使用while循环,此消彼长。Java代码public class Solution { public int Add(int num1,int num2) { while(num2!=0){ num1++; ...原创 2018-07-13 10:11:43 · 172 阅读 · 0 评论 -
剑指offer--正则表达式匹配
题目描述请实现一个函数用来匹配包括’.’和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配思路关于能否匹配可用递归的方式实现 匹配上的情况模式串的下一位是*时,分三种情况...转载 2018-07-14 08:42:12 · 312 阅读 · 0 评论 -
剑指offer--链表中环的入口结点
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路遍历链表的过程中,将遍历过的结点记录起来,同时判断遍历的下一个结点是否在记录中,也就是判断是否遍历过它。如果遍历过说明存在环,且这个结点就是环的入口结点。C++代码/*struct ListNode { int val; struct ListNode *next...原创 2018-07-14 08:59:14 · 264 阅读 · 0 评论 -
2019阿里巴巴实习生客户端开发工程师Android编程题脏矩阵合并
记录一下今晚参加的2019阿里Android开发实习生一道编程题。另一道连题目都没看懂,还浪费了好多时间qaq这一道看懂题目后其实也不是很难吧,当时没时间了,匆忙中也弄错了一些细节,哎,早知道这么难就不参加了,何必呢…话不多说上题目题目:脏矩阵合并为了记录这个题,解了好多张图,不要不信,看题目能把人吓一跳。看了半天都不知道这是个啥鬼题。各位小伙伴你们体会一下吧~~~图一图二图...原创 2019-04-12 23:28:17 · 517 阅读 · 0 评论