
算法
ZechariahZheng
这个作者很懒,什么都没留下…
展开
-
全排列——LeetCode47
本人自建blog(www.zechariahzheng.top)全排列——LeetCode47给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mtc8ZChO-1574907479642)(C:\Users\Z...原创 2019-11-28 10:19:33 · 163 阅读 · 0 评论 -
小米Git (转)
问题题目描述 git是一种分布式代码管理工具,git通过树的形式记录文件的更改历史,比如: base’<–base<–A<–A’ ^ | — B<–B’ 小米工程师常常需要寻找两个分支最近的分割点,即base.假设git 树是多叉树...转载 2018-09-05 22:43:20 · 325 阅读 · 0 评论 -
数据结构与算法系列 目录
最近抽空整理了”数据结构和算法”的相关文章。在整理过程中,对于每种数据结构和算法分别给出”C”、”C++”和”Java”这三种语言的实现;实现语言虽不同,但原理如出一辙。因此,读者在了解和学习的过程中,择其一即可!下面是整理数据数据和算法的目录表,对于每一种按照C/C++/Java进行了划分,方便查阅。若文章有错误或纰漏,请不吝指正。谢谢! 数据结构和算法目录表...转载 2018-08-30 11:41:38 · 179 阅读 · 0 评论 -
基数排序
基数排序:基数排序是桶排序的扩展,它的基本思想是:将整数按位切割成不同的数字,然后按每个位数分别比较。具体做法:将所有待比较数值统一为同样的长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序数列。 一、基数排序原理(转自:https://blog.youkuaiyun.com/lemon_tree12138/artic...原创 2018-08-19 19:05:12 · 162 阅读 · 0 评论 -
LeetCode【triangle】
转自:https://www.cnblogs.com/grandyang/p/4286274.html**重点内容** Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.For exam...转载 2018-08-16 13:06:04 · 180 阅读 · 0 评论 -
LeetCode【palindrome-partitioning】
思路:使用深度搜索(DFS)遍历所有的子串,判断每一个子串是否为回文字符串class Solution {public: vector<vector<string> > partition(string s) { vector<vector<string> > res; vector<strin...原创 2018-08-13 22:44:13 · 187 阅读 · 0 评论 -
LeetCode【distinct-subsequences】
思路:(动态规划)a[i][j] 表示T[0,j]在S[0,i]中的匹配个数如果不使用S[i],那么a[i][j] = a[i-1][j]如果使用S[i],那么一定是S[i]==T[j],那么a[i][j] = a[i-1][j-1]故:1、S[i]==T[j]a[i][j] = a[i-1][j]+a[i-1][j-1]2、S[i]!=T[j]a[i][j] = a[i-1][j...原创 2018-08-18 17:07:33 · 222 阅读 · 0 评论 -
LeetCode【clone-graph】
思路:(无向图的复制)题目要求的是让我们实现一个图的深拷贝。深拷贝指的是复制另外一个对象到自己的对象中,且两者不共享一个内存区,浅拷贝是指两者共享一个内存区所以我们需要new 来开辟新的内存区执行拷贝。还要注意一个问题。我们这个图实际上是个有向图,如果A有一个相邻顶点B,则A->B, 但是B能否到A取决于B是否有相邻顶点A. 也就是说如果B能达到A,说明图中存在环,如果不考虑环的存在,...转载 2018-08-13 21:15:48 · 179 阅读 · 0 评论 -
LeetCode【binary-tree-maximum-path-sum】
思路:不断地返回左右子树的两边的最大值,分清最大值和递归函数的返回值。/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL)...原创 2018-08-15 19:45:43 · 170 阅读 · 0 评论 -
广度优先搜索BFS和深度优先搜索DFS
转自:https://www.cnblogs.com/0kk470/p/7555033.html**重点内容**前言这几天复习图论算法,觉得BFS和DFS挺重要的,而且应用比较多,故记录一下。广度优先搜索有一个有向图如图a ...转载 2018-08-15 11:12:01 · 143 阅读 · 0 评论 -
LeetCode【word-ladder】
思路:广度优先搜索;先构造一个字符串队列,并将start加入队列1、对队列头字符串做每个字符替换2、每次替换后,判断是否和end匹配,如果匹配返回答案3、没有匹配,则在字典里面查询是否有邻近字符串4、如果有,则将该字符串加入队列,同时将该字符串从字典里删除5、重复1的过程,直到和end匹配。如果最后队列为空,但还未匹配到,则返回0#include <iostream>...原创 2018-08-15 12:57:05 · 131 阅读 · 0 评论 -
LeetCode【longest-consecutive-sequence】
思路:使用hash表来解决这个问题,先初试化一个hash表,存储所有数组元素,然后遍历这个数组,对找到的数组元素,去搜索其相连的上下两个元素是否在hash表中,如果在,删除相应元素并增加此次查找的数据长度,如果不在,从下一个元素出发查找,已经访问过的元素记录下来或者删除class Solution {public: int longestConsecutive(vector<...原创 2018-08-14 20:28:35 · 163 阅读 · 0 评论 -
LeetCode【sum-root-to-leaf-numbers】
思路:二叉树的先序遍历,加上字符串与数字之间的转换/*思路:二叉树的先序遍历*/#include <iostream>#include <sstream>#include <string>using namespace std;struct TreeNode { int val; TreeNode *left; ...原创 2018-08-14 20:00:08 · 160 阅读 · 0 评论 -
LeetCode【surrounded-regions】
思路:使用dfs判断遍历所有的点,同时在dfs的过程中检查点是否满足要求,并将访问过的点使用数组保存下来,注意返回值通过dfs的参数来返回(这个在深搜递归中挺好用的,如果不能确定何时结束)#include <iostream>#include <string>#include <vector>using namespace std;clas...原创 2018-08-14 17:18:38 · 200 阅读 · 0 评论 -
LeetCode【palindrome-partitioning-ii】
思路:先尝试使用深度搜索#include <iostream>#include <string>#include <vector>using namespace std;class Solution {public: int minCut(string s) { int res; res = INT_MAX; int resT...原创 2018-08-14 12:39:07 · 184 阅读 · 0 评论