剑指offer 剑指 Offer 48. 最长不含重复字符的子字符串请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 12345678910111213141516class Solution {public: int lengthOfLongestSubst 2023-10-25 数据结构与算法
Leetcode算法之字符串 3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 思路: 明确字串含义:连续的字符串,区别于子序列 如何区别字符串重复?哈希表 如何计算长度?利用下标,右下标-左下标(双指针)12345678910111213141516class Soluti 2023-10-25 数据结构与算法 #Leetcode
Leetcode算法之栈 20. 有效的括号 给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。 分析 判断字符串是否有效的规则是括号能匹配上且正确顺序闭合; 括号匹配有先来后匹配的顺序要求,类似于栈的存储方式,考虑用栈实现 字符串中除了左括号就是右括号,遍历时遇见左括号就压入栈中对应的 2023-10-25 数据结构与算法 #Leetcode
Leetcode算法之设计 707. 设计链表设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。 在链表类中实现这些功能: get(index):获取链表中第 index 个节点的值。 2023-10-25 数据结构与算法 #Leetcode
Leetcode算法之动态规划 70. 爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。 输入: 2输出: 2解释: 有两种方法可以爬到楼顶。. 1 阶 + 1 阶 ; 2 阶 思路: dp[i]爬到第i阶的方法 dp[i] = dp[i-1] + dp[i-2] dp[0] = 1; 2023-10-25 数据结构与算法 #Leetcode
Leetcode算法之链表 2. 两数相加给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 2023-10-25 数据结构与算法 #Leetcode
Leetcode算法之二叉树 105. 从前序与中序遍历序列构造二叉树根据一棵树的前序遍历与中序遍历构造二叉树。 注意:你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7] 12345 3 / \9 20 / \ 15 7 思路:(1)前序遍历:根节点->左节点->右节点;中 2023-10-25 数据结构与算法 #Leetcode
Leetcode算法之回溯 79. 单词搜索给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 board =[[‘A’,’B’,’C’,’E’],[‘S’,’F’,’C’,’S’],[‘A’,’D’,’E’,’E’]]给定 word = “ABCCED” 2023-10-25 数据结构与算法 #Leetcode
有向图环路检测 概念关于有向图的环路检测,首先我想先补充几个关于图的概念。顶点:图中的每个点称为顶点。顶点的入度:在有向图中,指以该顶点为终点的边的数目顶点的出度:在有向图中,指以该顶点为起点的边的数目 方法方法一:图中有环则表示至少有一条路径上出现俩个相同的顶点。该路径满足起点入度为0,终点出度为0.可以使用一个集合表示每个顶点的状态,是否被标记过,但需要注意,这个点被检查过后需要去掉这个标记,因为一条路径上有 2023-10-25 数据结构与算法 #图论
Effective C++ 条款02:尽量以const,enum,inline替换#define为什么尽量不用#define?(1)#define的记号名称可能在编译器处理源码时就已经被预处理器移走了,记号名称未能进入记号表,从而可能获得编译错误的信息。如果又是定义在非你所写的头文件中,你更将毫无概念,并耗时追踪。(2)无法用#define创建一个class专属常量,#define并不注重于(scope),一旦编译除非# 2023-10-25 C++