欢迎光临澳大利亚新华书店网 [登录 | 免费注册]

    • 数据结构LeetCode在线编程实训(C\C++语言全程视频讲解版高等学校数据结构课程系列教材)
      • 作者:编者:李春葆|责编:王冰飞
      • 出版社:清华大学
      • ISBN:9787302605201
      • 出版日期:2022/10/01
      • 页数:324
    • 售价:31.92
  • 内容大纲

        本书是《数据结构教程(第6版·微课视频·题库版)》(李春葆主编,清华大学出版社出版,简称《教程》)的配套在线编程实训指导书,详细给出了《教程》中所有在线编程题(共143道在线编程题,均来自LeetCode网站)的解题思路和参考源代码,提供了全部题目的讲解视频。书中在线编程题不仅涵盖数据结构课程的基本知识点,还融合了各个知识点的运用和扩展,学习、理解和借鉴这些参考答案是掌握和提高数据结构知识的最佳途径。本书自成一体,可以脱离《教程》单独使用。
        本书适合高等院校计算机及相关专业学生使用,也适合IT企业面试者和编程爱好者研习。
  • 作者介绍

        李春葆,武汉大学计算机学院教授。主要研究方向为数据挖掘和算法设计,先后主持和参加多个大型研究项目。主要为本科生讲授数据结构(15年以上)和软件工程等课程,为研究生讲授软件开发新技术、数据仓库与数据挖掘等课程,并出版十多部精品著作。
  • 目录

    配套资源
    第1章  绪论
      1.1  LeetCode网站在线编程说明
      1.2  基础算法设计
        1.2.1  LeetCode7——整数反转★
        1.2.2  LeetCode66——加一★
        1.2.3  LeetCode1——两数之和★
        1.2.4  LeetCode1588——所有奇数长度子数组的和★
    第2章  线性表
      2.1  顺序表及其应用
        2.1.1  顺序表的实现
        2.1.2  LeetCode67——二进制求和★
        2.1.3  LeetCode27——移除元素★
      2.2  有序顺序表及其应用
        2.2.1  LeetCode26——删除有序数组中的重复项★
        2.2.2  LeetCode80——删除有序数组中的重复项Ⅱ★★
        2.2.3  LeetCode88——合并两个有序数组★
        2.2.4  LeetCode4——寻找两个正序数组的中位数★★★
      2.3  链表的实现
        2.3.1  LeetCode707——设计链表★★
        2.3.2  LeetCode382——链表随机结点★★
      2.4  单链表及其应用
        2.4.1  LeetCode203——移除链表元素★
        2.4.2  LeetCode237——删除链表中的结点★
        2.4.3  LeetCode206——翻转链表★
        2.4.4  LeetCode92——翻转链表Ⅱ★★
        2.4.5  LeetCode328——奇偶链表★★
        2.4.6  LeetCode86——分隔链表★★
        2.4.7  LeetCode24——两两交换链表中的结点★★
        2.4.8  LeetCode876——链表的中间结点★
        2.4.9  LeetCode234——回文链表★
        2.4.10  LeetCode143——重排链表★★
        2.4.11  LeetCode147——对链表进行插入排序★★
        2.4.12  LeetCode25——k个一组翻转链表★★★
        2.4.13  LeetCode725——分隔链表★★
      2.5  有序单链表及其应用
        2.5.1  LeetCode83——删除有序链表中的重复元素★
        2.5.2  LeetCode82——删除有序链表中的重复元素Ⅱ★★
        2.5.3  LeetCode21——合并两个有序链表★
        2.5.4  LeetCode23——合并k个升序链表★★★
    第3章  栈和队列
      3.1  栈的实现
        3.1.1  LeetCode1381——设计一个支持增量操作的栈★★
        3.1.2  LeetCode155——最小栈★
      3.2  栈的应用
        3.2.1  STL中的stack栈容器
        3.2.2  LeetCode20——有效的括号★
        3.2.3  LeetCode1249——移除无效的括号★★
        3.2.4  LeetCode946——验证栈序列★★
        3.2.5  LeetCode1441——用栈操作构建数组★

      3.3  表达式求值
        3.3.1  LeetCode150——逆波兰表达式求值★★
        3.3.2  LeetCode227——基本计算器Ⅱ★★
        3.3.3  LeetCode224——基本计算器★★★
      3.4  队列的实现
        3.4.1  LeetCode622——设计循环队列★★
        3.4.2  LeetCode641——设计循环双端队列★★
      3.5  栈和队列相互实现
        3.5.1  STL中的queue队列容器
        3.5.2  LeetCode225——用队列实现栈★
        3.5.3  LeetCode232——用栈实现队列★
    第4章  串
      4.1  基本串操作
        4.1.1  LeetCode125——验证回文串★
        4.1.2  LeetCode14——最长公共前缀★
        4.1.3  LeetCode443——压缩字符串★★
      4.2  串模式匹配
        4.2.1  LeetCode28——实现strStr()★
        4.2.2  LeetCode459——重复的子字符串★
        4.2.3  LeetCode1408——数组中的字符串匹配★
    第5章  递归
      5.1  简单递归算法设计
        5.1.1  LeetCode509——斐波那契数★
        5.1.2  LeetCode50——Pow(x,n)★★
        5.1.3  LeetCode206——翻转链表★
        5.1.4  LeetCode234——回文链表★
        5.1.5  LeetCode24——两两交换链表中的结点★★
      5.2  复杂递归算法设计
        5.2.1  LeetCode59——螺旋矩阵Ⅱ★★
        5.2.2  LeetCode51——n皇后
    第6章  数组和矩阵
      6.1  数组
        6.1.1  LeetCode485——最大连续1的个数★
        6.1.2  LeetCode169——多数元素★
        6.1.3  LeetCode283——移动零★
      6.2  矩阵
        6.2.1  LeetCode867——转置矩阵★
        6.2.2  LeetCode1572——矩阵对角线元素的和★
        6.2.3  LeetCode566——重塑矩阵★
        6.2.4  LeetCode766——托普利茨矩阵★
    第7章  树和二叉树
      7.1  二叉树的先序、中序和后序遍历
        7.1.1  二叉树的存储结构及其创建
        7.1.2  LeetCode144——二叉树的先序遍历★★
        7.1.3  LeetCode94——二叉树的中序遍历★★
        7.1.4  LeetCode145——二叉树的后序遍历★★
      7.2  二叉树的层次遍历
        7.2.1  LeetCode102——二叉树的层次遍历★★
        7.2.2  LeetCode107——二叉树的层次遍历Ⅱ★★
      7.3  二叉树遍历算法的应用

        7.3.1  LeetCode872——叶子相似的树★
        7.3.2  LeetCode617——合并二叉树★
        7.3.3  LeetCode236——二叉树的最近公共祖先★★
        7.3.4  LeetCode226——翻转二叉树★
        7.3.5  LeetCode114——二叉树展开为链表★★
        7.3.6  LeetCode104——二叉树的最大深度★
        7.3.7  LeetCode111——二叉树的最小深度★
        7.3.8  LeetCode993——二叉树的堂兄弟结点★
        7.3.9  LeetCode515——在每个树行中找最大值★
        7.3.10  LeetCode513——找树左下角的值★
        7.3.11  LeetCode101——对称二叉树★
        7.3.12  LeetCode662——二叉树最大宽度★★
        7.3.13  LeetCode112——路径总和★
        7.3.14  LeetCode257——二叉树的所有路径★
        7.3.15  LeetCode113——路径总和Ⅱ★★
      7.4  二叉树的构造
        7.4.1  LeetCode105——从先序与中序遍历序列构造二叉树★★
        7.4.2  LeetCode106——从中序与后序遍历序列构造二叉树★★
        7.4.3  LeetCode889——根据先序和后序遍历序列构造二叉树★★
        7.4.4  LeetCode654——最大二叉树★★
        7.4.5  LeetCode100——相同的树★
        7.4.6  LeetCode572——另一棵树的子树★
      7.5  树
        7.5.1  树的存储结构
        7.5.2  LeetCode589——N叉树的先根遍历★
        7.5.3  LeetCode429——N叉树的层序遍历★★
    第8章  图
      8.1  图的基本应用
        8.1.1  图的存储结构
        8.1.2  LeetCode997——找到小镇的法官★
        8.1.3  LeetCode1615——最大网络秩★★
      8.2  图遍历及其应用
        8.2.1  LeetCode200——岛屿数量★★
        8.2.2  LeetCode547——省份数量★★
        8.2.3  LeetCode785——判断二分图★★
        8.2.4  LeetCode130——被围绕的区域★★
        8.2.5  LeetCode1091——二进制矩阵中的最短路径★★
        8.2.6  LeetCode994——腐烂的橘子★★
        8.2.7  LeetCode542——01矩阵★★
        8.2.8  LeetCode934——最短的桥★★
        8.2.9  LeetCode797——所有可能的路径★★
      8.3  最小生成树
        8.3.1  LeetCode1584——连接所有点的最小费用★★
        8.3.2  LeetCode684——冗余连接★★
        8.3.3  LeetCode1631——最小体力消耗路径★★
      8.4  最短路径
        8.4.1  LeetCode743——网络延迟时间★★
        8.4.2  LeetCode1334——阈值距离内邻居最少的城市★★
      8.5  拓扑排序
        8.5.1  LeetCode207——课程表★★

        8.5.2  LeetCode210——课程表Ⅱ★★
        8.5.3  LeetCode1462——课程表Ⅳ★★
    第9章  查找
      9.1  二分查找及其应用
        9.1.1  LeetCode240——搜索二维矩阵Ⅱ★★
        9.1.2  LeetCode704——二分查找★
        9.1.3  LeetCode35——搜索插入位置★
        9.1.4  LeetCode34——在有序数组中查找元素的第一个和最后一个
    位置★★
        9.1.5  LeetCode33——搜索旋转有序数组★★
        9.1.6  LeetCode81——搜索旋转有序数组Ⅱ★★
        9.1.7  LeetCode162——寻找峰值★★
        9.1.8  LeetCode4——寻找两个正序数组的中位数★★★
      9.2  二叉排序树及其应用
        9.2.1  LeetCode96——不同的二叉排序树★★
        9.2.2  LeetCode95——不同的二叉排序树Ⅱ★★
        9.2.3  LeetCode700——二叉排序树中的搜索★
        9.2.4  LeetCode450——删除二叉排序树中的结点★
        9.2.5  LeetCode235——二叉排序树的最近公共祖先★
        9.2.6  LeetCode98——验证二叉排序树★★
        9.2.7  LeetCode938——二叉排序树的范围和★
      9.3  平衡二叉树及其应用
        9.3.1  STL中的map和set容器
        9.3.2  LeetCode110——平衡二叉树★
        9.3.3  LeetCode1382——将二叉排序树变平衡★★
        9.3.4  LeetCode826——安排工作以达到最大收益★★
        9.3.5  LeetCode414——第三大的数★
      9.4  哈希表及其应用
        9.4.1  STL中的unordered_map容器
        9.4.2  LeetCode705——设计哈希集合★
        9.4.3  LeetCode146——LRU缓存机制★★
        9.4.4  LeetCode215——数组中的第k个最大元素★★
        9.4.5  LeetCode380——以常数时间插入、删除和获取随机元素★★
    第10章  内排序
      10.1  基本排序方法
        10.1.1  LeetCode1528——重新排列字符串★
        10.1.2  LeetCode912——排序数组★★
      10.2  快速排序的应用
        10.2.1  STL中的sort()排序算法
        10.2.2  LeetCode148——排序链表★★
        10.2.3  LeetCode922——按奇偶排序数组Ⅱ★
      10.3  二路归并排序的应用
        10.3.1  LeetCode148——排序链表★★
        10.3.2  剑指Offer51——数组中的逆序对★★★
        10.3.3  LeetCode315——计算右侧小于当前元素的个数★★★
        10.3.4  LeetCode493——翻转对★★★
      10.4  堆(优先队列)的应用
        10.4.1  STL中的priority_queue容器
        10.4.2  LeetCode973——最接近原点的k个点★★
        10.4.3  LeetCode295——数据流的中位数★★★

        10.4.4  LeetCode239——滑动窗口中的最大值★★★
      10.5  topk问题
        10.5.1  剑指Offer40——最小的k个数★
        10.5.2  LeetCode215——数组中的第k个最大元素★★
        10.5.3  LeetCode703——数据流中的第k大元素★
        10.5.4  LeetCode347——前k个高频元素★★
      10.6  基数排序及其应用
        10.6.1  LeetCode75——颜色分类★★
        10.6.2  LeetCode164——最大间距★★★
    附录A  所有在线编程题目列表
    附录B  在线编程实验报告示例