• 2024-09-10【代码随想录Day13】二叉树Part01
    理论基础文章讲解:代码随想录二叉树节点的定义:publicclassTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(){}TreeNode(intval){this.val=val;}TreeNode(intval,TreeNodeleft,TreeNoderight){this.val
  • 2024-09-09Day11 二叉树 part01| LeetCode
    理论基础二叉树的种类满二叉树完全二叉树二叉搜索树平衡二叉搜索树存储方式:数组、链式二叉树的遍历方式深度优先遍历前序(递归法、迭代法)中序(递归法、迭代法)后序(递归法、迭代法)广度优先遍历层序(迭代法)二叉树的定义publicclassTreeNode{
  • 2024-09-08【代码随想录Day10】栈与队列Part01
    232.用栈实现队列题目链接/文章讲解/视频讲解:用栈实现队列classMyQueue{Stack<Integer>stackIn;Stack<Integer>stackOut;publicMyQueue(){stackIn=newStack<>();stackOut=newStack<>();}publicvoidpush(int
  • 2024-09-04代码随想录训练营 Day50打卡 图论part01 理论基础 98. 所有可达路径
    代码随想录训练营Day50打卡图论part01一、理论基础DFS(深度优先搜索)和BFS(广度优先搜索)在图搜索中的核心区别主要体现在搜索策略上:1、搜索方向:DFS:深度优先,一条路走到黑。DFS从起点开始,选择一个方向深入到底,遇到死胡同再回溯,换一个方向继续探索。这种方式适合解决路径
  • 2024-09-02【代码随想录Day6】哈希表Part01|判断一个元素是否出现集合里
    哈希表理论基础文章讲解:哈希表理论基础要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。242.有效的字母异位词题目链接/文章讲解/视频讲解:有效的字母异位词定义一个哈希表record,遍历s,记录s中每个字母出现的次数,遍历t,减去t中每个字母出现的次数,遍历
  • 2024-08-15代码随想录算法训练营 | 动态规划 part01
    509.斐波那契数509.斐波那契数状态转移方程:F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2),其中n>1递归,太多重复计算classSolution{public:intfib(intn){if(n==0||n==1){returnn;}returnfib(n-1)
  • 2024-08-11栈和队列part01
    今天学习了栈和队列的第一部分。基础知识用栈模拟队列(双栈)用队列模拟栈(一个队列,但是需要重复将队头元素写到队尾)栈的基本应用(括号匹配、删除重复项、逆波兰表达式)1.基础知识栈和队列是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的(也就是我们可以控
  • 2024-08-08字符串part01
    今天学了字符产的第一部分:反转字符串,使用双指针。反转字符串Ⅱ,需要固定规律一段一段去处理字符串的时候,要想想在在for循环的表达式上做做文章。数组填充问题,其做法都是先预先给数组扩容带填充后的大小,然后在从后向前进行操作。1.反转字符串题目:编写一个函数,其作用是将输入
  • 2024-08-04Day 32 动态规划 Part01
    动态规划解题步骤确定dp数组(dptable)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组509.斐波那契数显然dp[i]代表fib[i],fib[i]=fib[i-1]+fib[i-2],fib[0]=0,fib[1]=1,遍历从前往后遍历即可。下面的代码优化了空间复杂度,但思路是一致的。
  • 2024-08-03链表part01
    今天是8月2日,学习了链表的基础知识。题目主要是链表的基础操作和反转链表,注意虚拟头节点的使用、next的顺序和tmp的灵活使用。1.移除元素题目:给一个链表的头节点head和整数val,请删除链表中所有满足Node.val==val的节点,并返回新的头节点。删除的方法,cur指针挨个遍
  • 2024-07-31数组part01
    2024年7月31日,今日复习了数组的基础知识;巩固了二分法的写法,保证可以快速准确写出;学习了双指针的应用,双指针是为了让多个for循环压缩为一个循环,学习的时候尤其注意循环的写法。1.数组基础知识定义:数组是存放在连续内存空间上的相同类型数据的集合。几个特点:数组下标都是从0开
  • 2024-07-29Day 27 贪心算法 Part01
    455.分发饼干思路:既然要满足最多的小孩吃到饼干,那么肯定优先满足胃口小的更能满足最多的。因此,先对两个数组排序。每次选择最小的能满足当前孩子的饼干。classSolution{publicintfindContentChildren(int[]g,int[]s){Arrays.sort(g);Arrays.sor
  • 2024-07-29DAY13 二叉树part01
     今日任务 二叉树的递归遍历(前中后)二叉树的迭代遍历(前中后)二叉树的统一迭代遍历二叉树的层序遍历(共十道题目)完成情况递归已掌握,代码略迭代前中手写一编,后和统一未学习层序遍历题目如下102.二叉树的层序遍历1/**2*Definitionforabinarytreenode.3*s
  • 2024-07-29day22-back tracking-part01-7.24
    tasksfortoday:1.回溯理论基础2.77.组合3.216.组合总和III4.17.电话号码的字母组合-------------------------------------------------------------------1.回溯理论基础-什么是回溯:在二叉树系列中,我们已经不止一次,提到了回溯,回溯是递归的副产品,只要有递归就
  • 2024-07-29day27-greedy-part01-7.29
    tasksfortoday:1.理论基础2.455.分发饼干3.376.摆动序列4.53.最大子序和------------------------------------------------------------------1.理论基础(1)贪心的本质是选择每一阶段的局部最优,从而达到全局最优。经常与贪心算法放在一起进行比较的就是动态规划,以下是
  • 2024-07-26DAY10 栈与队列part01
     理论基础文章讲解:https://programmercarl.com/%E6%A0%88%E4%B8%8E%E9%98%9F%E5%88%97%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html232.用栈实现队列 注意为什么要用两个栈题目链接/文章讲解/视频讲解:https://programmercarl.com/0232.%E7%94%A8%E6%A0%88%E5%AE%9E%E7%8E%
  • 2024-07-25代码随想录算法训练营第二十二天|回溯算法part01
    第77题.组合在单个集合1-n中,寻找所有个数为k的组合。和所有递归一样,都有三部曲。确定参数与返回值确定终止条件单层逻辑首先,回溯算法的返回值一般是void,参数依照题目要求而增加,在这一题中,参数有n,k还有startIndex。终止条件是path的size等于k,将path存放在result中。
  • 2024-07-24Day 22 回溯算法 part01
    77.组合我的这个解法还算挺简单易懂的,还是看注释classSolution{List<List<Integer>>ans=newArrayList();//存储最终结果集合List<Integer>tmp=newArrayList();//记录单次的pathpublicList<List<Integer>>combine(intn,intk){backTr
  • 2024-07-24「代码随想录算法训练营」第十九天 | 回溯算法 part01
    回溯算法模板voidbacktracking(参数){if(终止条件){存放结果;return;}for(选择:本层集合中元素(树中节点孩子的数量就是集合的大小)){处理节点;backtracking(路径,选择列表);//递归回溯,撤销处理结果}}
  • 2024-07-15Day 13 二叉树part01
    Day13二叉树part01二叉树的递归遍历这个用递归就好,现在写起来基本没问题二叉树的迭代遍历这个是重点,今天写的时候居然一次写出来了,多刷还是有用的。前中后三种遍历方式,其迭代版本的难度排序前<中<后。所以写的时候也是按这个顺序去做的。144.二叉树的前序遍历使用一
  • 2024-07-14【代码随想录|第十一章 图论part01 | 797.所有可能的路径 】
    代码随想录|第十一章图论part01|图论理论基础,797.所有可能的路径,广搜理论基础一、图论理论基础1.图的基本概念2.图的构造1)邻接矩阵2)邻接表3.图的遍历方式4.深度优先搜索理论基础二、797.所有可能的路径1.核心代码2.问题三、广搜理论基础总结python一、图论理
  • 2024-07-12day10-stack&Queue-part01-7.12
    tasksfortoday:1.理论基础2.232用栈实现队列3.225用队列实现栈4.20有效的括号5.1047删除字符串中所有相邻重复项--------------------------------------------------------------------------1.理论基础stack:firstinlastout     head    
  • 2024-07-09day1-array-part01-7.3
    taskfortoday:1.数组理论基础,2.704.二分查找,3.27.移除元素-------------------------------1.数组理论基础-数组是存放在连续内存空间上的相同类型数据的集合。-数组内存不能删除只能覆盖-注意与容器的区别2.704二分查找二分法的两个条件:(1)有序数组;(2)无
  • 2024-07-09day3-linked list-part01-7.5
    tasksfortoday1.链表理论基础2.203.移除链表元素3.707.设计链表4.206.反转链表------------------------------------------------1.链表理论基础单链表:(singly-linkedlist)链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据
  • 2024-06-17代码随想录第10天 | 栈与队列part01
    题目:232.用栈实现队列思路:1.使用双栈,一个作为输入,一个作为输出代码:classMyQueue{private:stack<int>A,B;public:MyQueue(){}voidpush(intx){A.push(x);}intpop(){//删除A栈底元素并返回元素intresult=this->p