算法练习
文章平均质量分 75
此专栏参考《算法竞赛入门经典》这三本书,《算法的乐趣》,《算法导论》中的内容,以及一些刷题网站如leetcode、牛客网等学习平台,记录对编程基本功的练习过程
喵的波波鱼
爱生活,也爱技术!
展开
-
字符串(1)——(1)判断一个二叉树是否为了另一个二叉树子树问题;(2)判断两个字符串是否互为变形词;(3)判断两个字符串是否互为旋转词;
此篇题目1,2,3来自于牛客网左大神的《直通BAT算法精讲课》,题目4来自于《剑指offer第二版》P51题目1:判断一个二叉树是否为了另一个二叉树子树问题解题思路:1.普通解法:二叉树遍历+匹配问题 时间复杂度为:O(N*M),空间复杂度:O(1) 考察t1中以每个节点为头的二叉树是否与t2一致最差情况:t1中每个节点的所形成的子树都要与t2中节点比较至多M次(...原创 2019-02-20 09:42:50 · 223 阅读 · 0 评论 -
算法练习(5)——数组(1)
此篇题目来自于《剑指offer第二版》P39——P481.数组中重复的数字输入: 数组长度 数组输出: 第一个找到的重复的数字思路:暴力思路:时间复杂度为O(n^2) ,空间复杂度为O(1)遍历数组,找每个元素在后续元素中是否有重复,有重复就输出 先排序再遍历思路:时间复杂度...原创 2019-02-20 09:45:10 · 211 阅读 · 0 评论 -
算法练习(4)——C++STL练习(3)
题目1:Unix ls 命令思路:1.接受用户输入,用数组保存用户输入的文件名2.计算输出的行数和列数3.对数组中的字符串进行排序4.按列输出,但这里我们不可能输出一列又回到开头去输出,所以真正代码的书写还是按行输出,但通过计算造成按列排序输出的“假象”代码实现:#include <iostream>#include <string>#...原创 2018-11-18 23:24:40 · 332 阅读 · 0 评论 -
算法练习(3)——C++ STL练习(2)
题目1:反片语思路:由于有了上篇博客题目中的经验,遇到不区分大小写,那就在判断时用临时变量保存调用tolower()函数转变成小写形式的字符串1.可以写一个函数对每个单词标准化:全部转化为小写字母,然后再对字母排序2.用map统计标准化每个单词出现的次数,标准化之后题目中能通过字母重排的单词相同3.保存单词出现次数为1的原单词4.对保存的单词进行字典排序,然后打印出来...原创 2018-11-16 18:56:24 · 423 阅读 · 1 评论 -
算法练习(2)——C++ STL练习(1)
说明:题目节选自《算法竞赛入门经典》(第二版),仅为了练习使用,跟着书中手敲代码,并添加自己的理解,仅此记录,我始终相信,当你开始不懂许多东西的时候,跟着书中弄懂作者的写的代码的思路,照着敲出来,敲多了,明白许多原理了,还有你会为了看懂它,查很多资料,然后当自己面对新的问题,脑子就有的调用了备注:1.个人更喜欢C++,对于作者书中的沿用了C语言的部分,我会改成C++实现,如果涉及到效率问题,请...原创 2018-11-16 01:35:14 · 1807 阅读 · 0 评论 -
二叉树(0)——二叉树的实现与二叉树的遍历
0.二叉树的实现(C++)未完,待补充#include <iostream>#include<iostream>#include<queue>#include<stack>using namespace std;//二叉树结点的定义template <typename T>struct BinTreeNode{...原创 2018-11-13 18:32:36 · 187 阅读 · 1 评论