• 2025-01-04160链表相交
    哈希肯定是能解的,就想着有没有其他方法。最开始的思路是翻转链表,然后再来找相交结点,但是题目要求不能改链表结构。官方题解的第二种方法确实巧妙,如果有相交结点的话最多通过两次遍历就一定能找到,因此。在分析中,其实我们也可以把两个不相交的链表看做相交,但是相交结点为nullptr代
  • 2025-01-04编程题-二叉树的中序遍历
    题目:给定一个二叉树的根节点root,返回它的中序 遍历。解答一(递归):首先我们需要了解什么是二叉树的中序遍历:按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。因此整个遍历过程天然具有递归的
  • 2024-12-26Linux之线程(一)
  • 2024-12-25二叉树展开为链表(先序遍历)
    给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例1:输入:root=[1,2,5,3,4,null,6]输出:[1,null,
  • 2024-12-24二叉树的层序遍历(队列)
    给你二叉树的根节点 root ,返回其节点值的 层序遍历 。(即逐层地,从左到右访问所有节点)。 示例1:输入:root=[3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]示例2:输入:root=[1]输出:[[1]]示例3:输入:root=[]输出:[] /***Definitionforabinarytreen
  • 2024-12-23第六章 二叉树part 01
    又是一种神奇的数据结构,可以让数据查询效率以指数级递减首先需要理解并掌握的是二叉树的遍历,遍历还分为两种,一种是递归遍历,代码简单到令人发指;另一种是迭代(是不是就是递推)今天只能先开个头,明天再补齐二叉树的递归遍历structTreeNode{intval;TreeNode*left;
  • 2024-12-23【LeetCode】LCR 175.计算二叉树的深度
    题目链接:LCR175.计算二叉树的深度题目描述:思路一(深度优先搜索):使用深度优先搜索算法进行二叉树后序遍历复杂度分析:时间复杂度O(N):N为树的节点数量,计算树的深度需要遍历所有节点空间复杂度O(N):最差情况下(当树退化为链表时),递归深度可达到N/***Definitionfor
  • 2024-12-23对称二叉树(递归)
    给你一个二叉树的根节点 root ,检查它是否轴对称。 示例1:输入:root=[1,2,2,3,4,4,3]输出:true示例2:输入:root=[1,2,2,null,3,null,3]输出:false /***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*
  • 2024-12-23翻转二叉树(递归)
    给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例1:输入:root=[4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例2:输入:root=[2,1,3]输出:[2,3,1]示例3:输入:root=[]输出:[]/***Definitionforabinarytreenode.*structTreeNode{*
  • 2024-12-22排序链表(归并排序)
    给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例1:输入:head=[4,2,1,3]输出:[1,2,3,4]示例2:输入:head=[-1,5,3,4,0]输出:[-1,0,3,4,5]示例3:输入:head=[]输出:[] 方法一:归并排序/***Definitionforsingly-linkedlist.*s
  • 2024-12-21只谈C++11新特性 - nullptr
    nullptr在C++11标准中,引入了nullptr关键字,用来表示空指针。这是对原有NULL的重要改进,提供了更强的类型安全性,并避免了一些常见的编程错误。1.nullptr的特点nullptr是一种新类型std::nullptr_t的常量,用于表示空指针。与NULL不同,nullptr具有明确的指针类型
  • 2024-12-1823. 合并 K 个升序链表
    题目链接解题思路:每次从全局的拿一个最小值出来,每个链表的「头」,都是最小的,所以,我们可以使用一个小根堆(优先级队列),存放每个链表当前的「头」,然后弹出一个全局最小的节点出来,然后把该节点的next放回小根堆,供之后使用。注意,压入小根堆时,要保证不为nullptr。代码/***D
  • 2024-12-16数据结构复习总结(期末前更新)
    搜索二叉树#include<bits/stdc++.h>usingnamespacestd;structTreeNode{ intval; TreeNode*left; TreeNode*right; TreeNode(intx):val(x),left(nullptr),right(nullptr){}};//搜索二叉树//每个节点的左子树中的所有节点值都小于该节点的值,而右子树
  • 2024-12-16二叉搜索树 & 平衡树(c嘎嘎版)
    定义:二叉搜索树是一种二叉树的树形数据结构,其定义如下:空树是二叉搜索树。若二叉搜索树的左子树不为空,则其左子树上所有点的附加权值均小于其根节点的值。若二叉搜索树的右子树不为空,则其右子树上所有点的附加权值均大于其根节点的值。二叉搜索树的左右子树均为二
  • 2024-12-16两数相加——链表
    题目链接思路链表的方式,模拟加法的计算过程,用一个变量保存进位信息即可。代码classSolution{public:ListNode*addTwoNumbers(ListNode*l1,ListNode*l2){//有一种办法可以节省空间,直接将结果放在l1或者l2上//但是这样就改变了原来的
  • 2024-12-15Windows DXGI屏幕捕获实现
    WindowsDXGI方式屏幕捕获实现主要步骤graphTBA[D3D11CreateDevice]-->B[ID3D11Device]A[D3D11CreateDevice]-->C[ID3D11DeviceContext]B-.QueryInterface.->D[IDXGIDevice]B-.GetParent.->E[IDXGIAdapter]E-.EnumOutputs.->F[IDXG
  • 2024-12-15二叉树常见题目2
    [Algo]二叉树常见题目21.最近公共祖先LCABinaryTreeNode*LCA(BinaryTreeNode*root,BinaryTreeNode*a,BinaryTreeNode*b){if(root==nullptr||root==a||root==b)returnroot;BinaryTreeNode*l=LCA(root->left,a,b),*r=LCA(root->right,a,
  • 2024-12-15C/C++中的NULL/nullptr到底是什么?
    操作系统在运行程序时,总是根据内存地址来查找该地址中存放的内容,继而进行运算的。所以,要知道,加载到内存中的所有数据都是存放在一定的地址中的。如下代码段,我们查看一下nullptr到底是什么?点击查看代码#include<iostream>intmain(){ void*var=nullptr; std::cin.
  • 2024-12-13链表操作2
    [Algo]链表操作21.两个链表的交点ListNode*intersectionNode(ListNode*head1,ListNode*head2){if(head1==nullptr||head2==nullptr)returnnullptr;ListNode*cur1=head1,*cur2=head2;intlen1=1,len2=1;while(cur1->next!=nul
  • 2024-12-11【数据结构——查找】二叉排序树(头歌实践教学平台习题)【合集】
    目录
  • 2024-12-11初识Linux · 编写生产消费模型(1)
    目录前言:阻塞队列前言:前文我们花了大量篇幅介绍了线程同步的概念,同时引出了条件变量,认识了相应的接口,并且快速编写了一个简单的测试用例见识了一下条件变量的使用,并且有意思的是,在Ubuntu环境下,man不了条件变量对应的接口,所以想要查询对应的接口可以使用对应的centos系统。
  • 2024-12-09C++链表的创建与基本操作
    在C++中,链表是一种动态数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。链表具有灵活的内存管理和高校的插入与删除操作,但访问效率较低。链表的每个节点通常包含两部分:1、数据部分(存储链表中元素的数据);2、指针部分(指向链表中的下一个节点)。链表类型主
  • 2024-12-06二叉树遍历
    [Algo]二叉树遍历二叉树节点类型定义:structBinaryTreeNode{intval;BinaryTreeNode*left;BinaryTreeNode*right;BinaryTreeNode(intx):val(x),left(nullptr),right(nullptr){}};1.前序遍历//1.非递归前序遍历二叉树//(1)弹出栈顶(2)
  • 2024-12-05反转字符串中每个单词的字符顺序,但保持单词之间的相对顺序不变(C++)
     需求:用户输入一行字符(一个英语句子lastweek,Iwenttocinima.),将该行字符按照每个单词逆序输出(即输出:tsalkeew,Itnewotaminic.)。要求1.写一个函数用来实现每个单词的字符顺序颠倒,拿到头和尾,对代码进行遍历(判断是否为单词首字母:当前为字母,前面是空格或者什么都没有;判
  • 2024-12-01102. 二叉树的层序遍历
    问题描述给你二叉树的根节点root,返回其节点值的层序遍历。(即逐层地,从左到右访问所有节点)。分析对于nullptr:先判不空再入队入队列后在for中判空,为空则continue第一种更好,因为如果为空,即使continue也会影响全局,比如该题中res.push_back(layer_res);当某层结点为空,则lay