- 2024-10-23代码随想录-环形链表II
题目与解析 题目链接:环形链表II本题两个关键点,1、确定有环2、确定环的入口位置 提供两种解法,第一种是我借助了一个辅助的列表来记录指针,空间复杂度O(n)比较无脑 第二种是Carl哥的双指针法,又是套圈问题,虽然很难想,但还是推荐这种方式,这才是算法解法一:publ
- 2024-09-17代码随想录算法 - 二叉树7
题目1669.修剪二叉搜索树给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉搜索树,使得所有节点的值在[low,high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在唯一的答案
- 2024-08-30day59-graph theory-part09-8.30
tasksfortoday:1.digkstra堆优化版47.参加科学大会2.bellman_ford算法94.城市间货物运输I---------------------------------------------------------------------------------1.dijkstra堆优化版Thisisanoptimizationforthevanilladijkstra,throughus
- 2024-08-30day58-graph theory-part08-8.29
tasksfortoday:1.拓扑排序117.软件构建2.dijkstra算法47.参加科学大会---------------------------------------------------------------------------------1.拓扑排序117.软件构建Inthispractice,itinvolvesmainlytheBFSmethod,whichiterativelysearc
- 2024-07-01Lua实现链表(面向对象应用)
Lua实现面向对象面向对象核心三要素Lua面向对象大致原理面向对象示例继承与多态示例面向对象核心三要素1.封装:对一个事物的抽象为一些属性和行为动作的集合,封装将属性和行为动作(操作数据的方法)绑定在一起,并隐藏对象的内部实现细节,只暴露给外部部分接口。2.继承是
- 2024-03-31Python数据结构与算法——数据结构(栈、队列)
目录数据结构介绍列表栈栈的基本操作:栈的实现(使用一般列表结构即可实现):栈的应用——括号匹配问题队列队列的实现方式——环形队列 队列的实现方式——双向队列 队列内置模块栈和队列应用——迷宫问题栈——深度优先搜索 队列——广度优先搜索数据结构介绍
- 2023-12-31代码随想录算法训练营第12天 | 树的遍历
(本合集全部为Go语言实现)相关文章链接:递归遍历迭代遍历统一迭代法相关视频链接:Leetcode94状态:实现过程中的难点:迭代法的模拟过程比较难想个人写法递归方式funcinorderTraversal(root*TreeNode)[]int{varres[]intinorderTraversal0(root,&res)return
- 2023-12-05[LeetCode Hot 100] LeetCode206. 反转链表
题目描述思路:双指针算法方法一:/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(){}*ListNode(intval){this.val=val;}*ListNode(intval,ListNodenext){this.val=v
- 2023-10-24Unity基于状态机的架构与设计
我们做游戏的时候经常会有流程控制,流程控制的方法有很多,行为决策树,状态机等。本质差别都不大,就是把每一段执行逻辑做成一个一个的节点,根据条件执行某个节点,切换到某个节点。今天给大家分享一下基于状态机来做游戏流程的控制。 1一个简单的状态机案例 我们先来拆解一个使用
- 2023-08-16非递归求树高
利用层次遍历求树高,最重要的就是计算每一层的遍历什么时候结束。curNode:入队+1,出队-1。时刻记录队列中结点个数,preNode==0时,curNode==下一层结点个数preNode:出队-1,当==0时,该层遍历结束。preNode=curNode;high++;//非递归求二叉树的高度或深度intTreeHighByQueue(TreeT){
- 2023-08-13单链表反转
单链表反转反转单链表是一个很常见的问题迭代法最直观的方法就是遍历链表的同时将其反转packagemainimport."nc_tools"/**typeListNodestruct{*Valint*Next*ListNode*}*//***代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规
- 2023-07-07游戏AI-寻路-A*寻路算法
算法介绍:作用:在一个图中,提供一个起点A与一个终点B,给你找出一条估算出来较短的路时间复杂度:n*log(m),n表示图中的节点数,m表示总边的数量时间复杂度分析:一般游戏中的图是一个二维矩阵,所以每个点的方向也就上下左右这么几个,所以每个点枚举方向的时间为常数虽然复杂度为:n*lo
- 2023-06-29代码随想录算法训练营第二十天| 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树
669.修剪二叉搜索树思路递归法: 需要思考清楚,如果当前节点<low,那么就返回递归它的右节点,而不是自己取判断,找出来一个合适的节点,这样的话会越想越乱代码:1TreeNode*trimBST_cursor(TreeNode*root,intlow,inthigh){2if(!root)returnnullptr;34if
- 2023-06-13计时器封装
心血来潮写个计时器玩一下在开发的过程中难免会遇到需要大量的计时器,有一个好的计时器对开发或者程序的运行效率都有很大的提升作为一个合格的程序员,我们不可能每次有计时都在update去做一个计时或者新开一个协程去计时,太麻烦辣,效率太慢辣,性能还差所以赶紧封装器来... 这
- 2023-04-28二叉树Binary Tree
二叉树BinaryTree1.树的一些常用术语2.二叉树的概念树有很多种,每个节点最多只能有两个子节点的一种形式称为二叉树;二叉树的子节点分为左子节点和右子节点;以下三种均为二叉树:若该二叉树的所有叶子节点都在最后一层,且节点总数n==\(2^k\)-1,k为层数,则称为满二叉树
- 2023-04-09自用纯C语言实现任务调度(可用于STM32、C51等单片机)
前言 这个任务调度模块的实现是形成于毕设项目中的,用在STM32中,断断续续跨度2个月实现了一些基本功能,可能后面再做其他项目时会一点点完善起来,也会多学习相关知识来强化模块的实用性和高效性,毕竟用自己自主实现出来的功能还是蛮舒心的。任务调度模式结构 整体上的结构属于
- 2023-03-10单链表经典面试题
单链表经典面试题1.求单链表中有效节点的个数思路:直接遍历节点个数即可,如果带头节点则不统计头节点方法代码:/***遍历求链表有效节点个数,但不统计头节点*@param
- 2023-02-24深入理解跳表及其在Redis中的应用
前言跳表可以达到和红黑树一样的时间复杂度O(logN),且实现简单,Redis中的有序集合对象的底层数据结构就使用了跳表。其作者威廉·普评价:跳跃链表是在很多应用中有可能替代
- 2023-02-09迷宫问题
StackMethod优点:代码简单缺点:不一定是最短路径自己写的maze=[[1,1,1,1,1,1,1,1,1,1],[1,0,1,0,0,1,1,1,0,1],[1,0,0,0,1,1,
- 2023-02-03C语言-链表流星雨(EsayX)
刷B站看到的,做个玩玩。IDE:VisualStudio2022。依赖EsayX图形库1-效果 2-程序/*链表流星雨单文件版本依赖EsayX图形库*/#include<stdio.h>#include<stdlib.h>
- 2023-01-27图文:深度优先遍历(DFS)和广度优先遍历(BFS)
/***注意:left/right值若没有显示设置为null,值即为undefined*在调用二叉树前、中、后序遍历方法时,由于参数设置了默认值(tree)*所以进入了死循环*/consttree={
- 2023-01-27二叉树中是否存在某值
constbinarySearchTree=(node=tree,target=8)=>{letcurNode=nodewhile(true){if(!curNode){returnfalse}
- 2023-01-26反转单向链表
数组生成单向链表constcreateLinkList=(arr=[1,2,3,4,5,6])=>{constlength=arr.length;letcurNode={value:arr[arr.length-1],
- 2023-01-06链表
1.什么是链表链表(LinkedList):一种线性表数据结构。它使用一组任意的存储单元(可以是连续的,也可以是不连续的),来存储一组具有相同类型的数据。即「链表」是实现线性表
- 2022-11-22【链表3】反转链表
题目描述输入一个链表,反转链表后,输出链表的所有元素。/*publicclassListNode{intval;ListNodenext=null;ListNode(intval){this.val=