随笔分类 -  算法与数据结构

基本的算法代码
二叉树非递归遍历
摘要:一、非递归先序遍历:先遍历根节点,后左,再右。先访问即任一节点,其可看作是根节点,因此可以直接访问;访问之后,若其左孩子不为空,按相同的规则访问他的左子树。 当访问其左子树,再访问其右子树,处理过程如下: 1、访问节点cur,将其入栈; 2、判断节点cur的左孩子是否为空,若为空,则取栈顶节点出栈, 阅读全文

posted @ 2017-11-12 15:52 wsw_seu 阅读(277) 评论(0) 推荐(0)

二叉树层序遍历
摘要:层序遍历:用一个队列保存当前结点的左右孩子以实现层序遍历,因为先访问的结点,其左右孩子结点也要先访问 接下来可以看两个变种: Maximum Depth of Binary Tree: Given a binary tree, find its maximum depth.The maximum d 阅读全文

posted @ 2017-11-12 14:56 wsw_seu 阅读(195) 评论(0) 推荐(0)

二叉搜索树的后序遍历序列
摘要:题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 1 class Solution { 2 public: 3 bool judge(vector<int>& a,int l,int r) 4 { 5 阅读全文

posted @ 2017-11-09 09:42 wsw_seu 阅读(134) 评论(0) 推荐(0)

广度优先遍历&深度优先遍历
摘要:一、广度优先算法BFS(Breadth First Search) 基本实现思想 (1)顶点v入队列。 (2)当队列非空时则继续执行,否则算法结束。 (3)出队列取得队头顶点v; (4)查找顶点v的所以子节点,并依次进入队列; (5)转到步骤(2)。 二、深度优先算法DFS(Depth First 阅读全文

posted @ 2017-10-31 15:53 wsw_seu 阅读(388) 评论(0) 推荐(0)

顺时针打印矩阵
摘要:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 1 class Solution { 2 public: 3 vector printMatrix(vector > ma... 阅读全文

posted @ 2017-10-31 09:43 wsw_seu 阅读(176) 评论(0) 推荐(0)

合唱团
摘要:题目描述 有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗? 输入描述: 每个输入包含 1 个测试用例。每个测试数据的第一行包含一个整数 n (1 <= 阅读全文

posted @ 2017-10-30 14:03 wsw_seu 阅读(154) 评论(0) 推荐(0)

二叉树的镜像
摘要:题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 1 /* 2 struct TreeNode { 3 int val; 4 st 阅读全文

posted @ 2017-10-26 10:24 wsw_seu 阅读(154) 评论(0) 推荐(0)

合并两个排序的链表
摘要:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 阅读全文

posted @ 2017-10-25 10:37 wsw_seu 阅读(99) 评论(0) 推荐(0)

游历魔法王国
摘要:魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树。 小易现在在0号城市,每次行动小易会从当前所在的城市走到与其相邻的一个城市,小易最多能行动L次。 如果小易到达过某个城市就视为小易游历过这个城市了,小易现在要制定好的旅游计划使他能游历最多的城市,请你帮他计算一下他 阅读全文

posted @ 2017-10-25 10:00 wsw_seu 阅读(390) 评论(0) 推荐(0)

动态规划之最长公共子串
摘要:描述: 计算两个字符串的最大公共子串(Longest Common Substring)的长度,字符不区分大小写。 输入: 输入两个字符串 输出: 输出一个整数 样例输入: 样例输出: 这里的最大公共字串要求的字串是连续的。 求字串的方法和求子序列方法类似: 当str1[i] == str2[j]时 阅读全文

posted @ 2017-10-21 15:39 wsw_seu 阅读(273) 评论(0) 推荐(0)

动态规划之最长公共子序列
摘要:动态规划法: 经常会遇到复杂问题不能简单的分成几个子问题,因而会分出一系列子问题。简单的采用把大问题分解成子问题,并综合子问题解导出大问题的方法,问题求解耗时会按着指数幂级数增加。为了节约重复求相同的子问题的时间,引入一个数组,不管他们是否对最终解有帮助,把所有子问题的解存于该数组中,这就是动态规划 阅读全文

posted @ 2017-10-21 15:02 wsw_seu 阅读(432) 评论(0) 推荐(0)

Palindromic Substrings
摘要:Given a string, your task is to count how many palindromic substrings in this string. The substrings with different start indexes or end indexes are c 阅读全文

posted @ 2017-10-20 14:22 wsw_seu 阅读(137) 评论(0) 推荐(0)

Longest Palindromic Substring
摘要:Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Example: Example: 阅读全文

posted @ 2017-10-20 10:56 wsw_seu 阅读(117) 评论(0) 推荐(0)

木棒拼图
摘要:有一个由很多木棒构成的集合,每个木棒有对应的长度,请问能否用集合中的这些木棒以某个顺序首尾相连构成一个面积大于 0 的简单多边形且所有木棒都要用上,简单多边形即不会自交的多边形。 初始集合是空的,有两种操作,要么给集合添加一个长度为 L 的木棒,要么删去集合中已经有的某个木棒。每次操作结束后你都需要 阅读全文

posted @ 2017-10-19 14:01 wsw_seu 阅读(848) 评论(0) 推荐(0)

最大映射
摘要:有 n 个字符串,每个字符串都是由 A-J 的大写字符构成。现在你将每个字符映射为一个 0-9 的数字,不同字符映射为不同的数字。这样每个字符串就可以看做一个整数,唯一的要求是这些整数必须是正整数且它们的字符串不能有前导零。现在问你怎样映射字符才能使得这些字符串表示的整数之和最大? 每组测试用例仅包 阅读全文

posted @ 2017-10-19 11:40 wsw_seu 阅读(248) 评论(0) 推荐(0)

二分查找及其变种(非递归方式)
摘要:二分查找在面试中经常被问到,尤其是他的各种变化版本。二分查找就是把查找的键值和子数组中的中间键作比较,如果被找的键值小于中间键,则在左半部分继续查找;如果大于中间值就在右半部分查找;否则就是要查找的元素。 基本二分查找 给定一个有序数组和一个关键字,找到该值在数组中的下标,否则返回-1 1 int 阅读全文

posted @ 2017-10-17 15:07 wsw_seu 阅读(1765) 评论(0) 推荐(1)

3. Longest Substring Without Repeating Characters
摘要:Given a string, find the length of the longest substring without repeating characters. Examples: Given "abcabcbb", the answer is "abc", which the leng 阅读全文

posted @ 2017-10-15 21:30 wsw_seu 阅读(123) 评论(0) 推荐(0)

排序之归并排序
摘要:归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 归并过程为:比较 阅读全文

posted @ 2017-10-12 10:45 wsw_seu 阅读(157) 评论(0) 推荐(0)

排序之堆排序
摘要:堆排序时间复杂度:O(NlogN).二叉堆:是完全二叉树。将其结点存入数组的话,任意一非叶结点位置存在以下的两种关系1、k[i]<=k[2*i+1] && k[i]<=k[2*i+2] (小顶堆) 小顶堆堆顶关键字肯定是所有关键字中最小的2、k[i]>=k[2*i+1] && k[i]>=k[2*i 阅读全文

posted @ 2017-10-12 10:03 wsw_seu 阅读(131) 评论(0) 推荐(0)

排序之选择排序
摘要:1、直接选择排序(Straight Select Sorting) 也是一种简单的排序方法,它的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,....,第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1] 阅读全文

posted @ 2017-10-12 10:02 wsw_seu 阅读(143) 评论(0) 推荐(0)

导航