数据结构及算法
InsaneDuck
学习记录
展开
-
【算法笔记】二叉树的路径和
LC437 路径总和Ⅲ解法一 两次递归思路:先序递归遍历每个节点 + dfs确定路径和为targetSum的路径数目int res = 0;int pathSum(TreeNode* root, int targetSum) { if(root == nullptr) return 0; dfs(root, targetSum); pathSum(root->left, targetSum); pathSum(root->right, targetSum原创 2021-08-04 21:17:29 · 126 阅读 · 0 评论 -
【算法笔记】回文串
LC5 最长回文子串1 枚举(超时)stringPalindrome(string s) { int len = s.length(); if(len < 2) return s; int maxlen = 1; int begin = 0; //枚举所有长度大于1的子串 for(int i = 0; i < len - 1; ++i) { //右边界 for(int j = i + 1; j <原创 2021-08-02 22:55:45 · 112 阅读 · 0 评论 -
【算法笔记】链表相关
LC 141环形链表注意快慢指针的使用bool hasCycle(ListNode *head) { //快慢指针 if(head == nullptr) return false; ListNode *fast = head, *slow = head; while(fast->next && fast->next->next) { /* * 在链表中只有一个节点时,快慢指针都为nullptr,返回tru原创 2021-07-28 22:46:24 · 58 阅读 · 0 评论 -
【算法笔记】LC72 编辑距离
题目给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符插入和删除等同1 动态规划步骤:定义二维dp方程,dp[i][j]表示word1的前i个字符转换成word2的前j个字符所使用的的最少操作数; 边界状态初始化,从空串到有i个字符的字符串所需要的经过的步骤为i; 状态转移方程: 当前字母相同:dp[i][j...原创 2021-07-27 18:31:40 · 88 阅读 · 0 评论 -
【算法笔记】二叉树遍历
目录1 先序遍历1.1 递归1.2 迭代2 中序遍历2.1 递归2.2 迭代3 后序遍历3.1 递归3.2 迭代1 先序遍历1.1 递归void preOrder(TreeNode* root, vector<int>& preRes) { //根左右 if(root == nullptr) return; preRes.push_back(root->val); preOrder(root->...原创 2021-07-27 14:04:14 · 122 阅读 · 0 评论