随笔分类 -  LeetCode

摘要:学习自:算法-排序 约定 待排序的元素需要实现 Java 的 Comparable 接口,该接口有 compareTo() 方法,可以用它来判断两个元素的大小关系。 使用辅助函数 less() 和 swap() 来进行比较和交换的操作,使得代码的可读性和可移植性更好。 排序算法的成本模型是比较和交换 阅读全文
posted @ 2021-04-29 15:23 +D 阅读(60) 评论(0) 推荐(0)
摘要:学习自:CS-Note Leetcode 题解 - 双指针 1、有序数组的Two Sum 167. 两数之和 II - 输入有序数组 题目描述: 给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。 函数应该以长度为 2 的整数数组的 阅读全文
posted @ 2021-04-23 08:57 +D 阅读(81) 评论(0) 推荐(0)
摘要:105. 从前序与中序遍历序列构造二叉树 根据前序遍历和中序遍历,我们可以发现前序遍历的第一个元素就为根元素,在中序遍历中找到这个元素,那么中序遍历中左边为根元素的左子树,右边为右子树,依次递归。 /** * Definition for a binary tree node. * public c 阅读全文
posted @ 2019-05-18 22:19 +D 阅读(1137) 评论(0) 推荐(1)
摘要:101 对称二叉树 C++代码(递归): 递归的判断两个结点是否相等,两个结点都为空则相等,两个结点一个为空则不相等,两个结点都不为空但如果他们的val相等且左右子树也相等,则这两个结点相等,左右子树的判断又可以通过比较两两对称的结点。 java代码(迭代法): 用一个链表,把树的每一层按对称方式  阅读全文
posted @ 2019-05-15 23:08 +D 阅读(195) 评论(0) 推荐(0)
摘要:102 二叉树的层序遍历 这个题目和书上不一样的地方就是不同的层的放在一个vector中,每层可以区分开。于是,我们可以定义一个count,用来计算每一层的结点数。 用队列来存放树的结点。 C++代码: Java代码: Java中对于Queue来说,就是一个FIFO(先进先出)的队列,添加元素只能在 阅读全文
posted @ 2019-05-11 23:03 +D 阅读(4618) 评论(0) 推荐(0)
摘要:145 二叉树的后序遍历 后序遍历,先访问左子树然后访问右子树然后访问根节点。 C++代码 java代码 阅读全文
posted @ 2019-05-07 21:15 +D 阅读(405) 评论(0) 推荐(0)
摘要:144 二叉树的前序遍历 这个思路与二叉树的中序遍历一样,只是先把每一个新的根结点,先把起值放入要返回的列表,然后把它存起来,等遍历完左子树然后返回继续访问其右子树。 C++代码 Java代码 阅读全文
posted @ 2019-05-06 23:04 +D 阅读(232) 评论(0) 推荐(0)
摘要:94 二叉树的中序遍历 中序遍历就是先访问树的左子树,然后访问根结点,最后访问右子树 中序遍历(非递归) java代码: ArrayList用来存储节点数据 当根节点不为空时,则把根结点入栈,然后以它的左子树为根节点继续往下判断(根节点不为空时,则把根结点入栈),直到某个左子女结点为空时,则执行出栈 阅读全文
posted @ 2019-05-05 23:11 +D 阅读(662) 评论(0) 推荐(0)
摘要:237 删除链表中的结点(链表) 分析:一般链表删除一个结点是把这个结点的上一个结点指向这个结点的下一个j结点,但是现在只有被删除的结点,单向链表中我们并不能得到他的上一个结点,只能得到他的下一个结点,因此我们换一种思路,把它下一节点的数据赋给这个结点,然后把它指向他的下下个结点,删除下一个结点,这 阅读全文
posted @ 2019-04-11 20:29 +D 阅读(168) 评论(0) 推荐(0)