算法
Woosual
做着算法的研究却想搞软开
展开
-
顺时针打印矩阵——状态机封装法
最近面试字节跳动时,面试官给了这个题{ {1, 2, 3, 4},{5, 6 ,7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}, {17, 18, 19, 20} };虽然去年做过类似的题,但是需要申请一份空间用于记录矩阵是否被打印,这种思路被面试官直接否定,让我不许开辟空间。由于需要不断判断当前打印值的位置,逻辑上比较麻烦,但是没做出来。后来挂了,自己再考虑这个题时,觉得可以用状态机来解决这一类比较复杂的问题。结合状态机的封装,找到了一中空间复杂度为O(1)的做法,时间复原创 2020-06-26 10:32:08 · 229 阅读 · 0 评论 -
压缩算法-腾讯笔试 用递归的方式代替入栈和出栈
小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为m|S,例如字符串ABCABCABC将会被压缩为[3|ABC],现在小Q的同学收到了小Q发送过来的字符串,你能帮助他进行解压缩么?输入描述:输入第一行包含一个字符串s,代表压缩后的字符串。S的长度<=1000;S仅包含大写字母、[、]、|;解压后的字符串长度不超过100000;压缩递归层数不超过10层;输出描述:输出一个原创 2020-06-18 16:22:16 · 237 阅读 · 0 评论 -
求最长回文子串
字符处理编程笔记一1.最长回文子串1.最长回文子串题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。123示例 2:输入: "cbbd"输出: "bb"12解法一:暴力解法1.两重循环遍历所有子串;2.判断回文子串。时间复杂度:O(n3) O(n^3)O(n3)#include <iostream>#in..转载 2020-06-12 18:52:41 · 196 阅读 · 0 评论 -
LeetCode动态规划递归调用解法记录
题目描述:给定一个字符串s和一组单词dict,在s中添加空格将s变成一个句子,使得句子中的每一个单词都是dict中的单词返回所有可能的结果例如:给定的字符串s="catsanddog",dict=["cat", "cats", "and", "sand", "dog"].返回的结果为["cats and dog", "cat sand dog"].#includ...原创 2020-03-10 15:25:12 · 207 阅读 · 0 评论 -
二叉树的递归遍历与迭代遍历
题目描述求给定的二叉树的后序遍历。例如:给定的二叉树为{1,#,2,3}, 1↵ ↵ 2↵ /↵ 3↵返回[3,2,1].备注;用递归来解这道题太没有新意了,可以给出迭代的解法么?Given a binary tree, return thepostordertraversal of its nodes' values.For...原创 2020-02-07 10:58:02 · 381 阅读 · 0 评论 -
二叉树的递归遍历
/*** Definition for binary tree* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*///实现二叉树的递归遍历...原创 2020-02-06 10:59:30 · 124 阅读 · 0 评论 -
十大排序算法C++实现
内容转自:https://blog.csdn.net/weixin_41190227/article/details/86600821,采用C++实现。0、排序算法说明0.1 排序的定义对一序列对象根据某个关键字进行排序。0.2 术语说明稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;内排序...转载 2020-06-14 08:57:52 · 333 阅读 · 0 评论 -
计算逆波兰式(后缀表达式)的值——栈的使用
s.empty(); //如果栈为空则返回true, 否则返回false;s.size(); //返回栈中元素的个数s.top(); //返回栈顶元素, 但不删除该元素s.pop(); //弹出栈顶元素, 但不返回其值s.push(); //将元素压入栈顶题目描述计算逆波兰式(后缀表达式)的...原创 2020-02-01 10:43:49 · 827 阅读 · 0 评论 -
LeetCode求给定二叉树的最小深度讨论总结
题目描述求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。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 le...原创 2020-01-31 20:33:37 · 597 阅读 · 0 评论