随笔分类 - 数据结构与算法
数据结构与算法
摘要:上节介绍了二叉树的一些基本概念,这篇文章开始,我们开始学习二叉树的一些算法问题,今天先看一些层次遍历的题目。 二叉树的层次遍历 题目 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如:给定二叉树: [3,9,20,null,null,15,7], 返回其层次遍历
阅读全文
摘要:二叉树 定义: 来自于百度百科。 在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左
阅读全文
摘要:回文链表 链接 请检查一个链表是否为回文链表。 进阶:你能在 O(n) 的时间和 O(1) 的额外空间中做到吗? 解题思路: 回文链表的特点就是对称。 把链表放到栈中去,利用栈的先进后出的规则,和原链表一一做比较。全部相等,则是回文链表。 代码实现如下: # Definition for singl
阅读全文
摘要:反转一个单链表。 进阶:链表可以迭代或递归地反转。你能否两个都实现一遍? 示例 : 给定这个链表:1->2->3->4->5 返回结果: 5->4->3->2->1 题目链接 解题思路: 1. 迭代版本: 循环列表,定义两个指针,一个指针是已经迭代完的链表的最后一个节点称为last_node,一个指
阅读全文
摘要:我们在上篇文章里面提到了链表的翻转,给定一个链表,对每两个相邻的节点作交换,并返回头节点,今天的这道题是它的升级版,如下: k个一组翻转链表 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节
阅读全文
摘要:继续关于linked list的算法题: 删除排序链表中的重复元素 给定一个排序链表,删除所有重复的元素使得每个元素只留下一个。 案例: 给定 1->1->2,返回 1->2 给定 1->1->2->3->3,返回 1->2->3 解题思路: 这道题很简单,只需要比较当前节点和下一个节点,相同,则当
阅读全文
摘要:我们继续来看链表的第二道题,来自于leetcode: 两数相加 给定两个非空链表来代表两个非负整数,位数按照逆序方式存储,它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例: 分析: 因为是位数按照逆序方式存储,所以链表的前
阅读全文
摘要:链表(维基百科) 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编
阅读全文
摘要:我为什么要开始写数据结构和算法的博客,是的,因为我被算法和数据结构虐了,面试的时候被虐了,基础不太好,导致一个老领导给我内推到头条,我都没有勇气去面试。虽然工作了快四年的样子,但是一直在做业务的事情,语言也学习了好几种,但是真正的底层的数据结构和算法,真的没有怎么接触过。 我一直以为只要我把业务做好
阅读全文
摘要:学习这件事在任何时间都不能停下。准备坚持刷leecode来提高自己,也会把自己的解答过程记录下来,希望能进步。 Two Sum Given an array of integers, return indices of the two numbers such that they add up to
阅读全文