自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 leetcode第160题相交链表C++

题目描述:编写一个程序,找到两个单链表相交的起始节点。代码解析: 链表a 走了len(a)+【len(b)-len(公共部分)】;链表b 走了len(b)+【len(a)-len(公共部分)】最终会找到交点。代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NU

2020-05-31 21:56:10 129

原创 leetcode第141题环形链表C++

题目描述:给定一个链表,判断链表中是否有环。代码分析:如果没有环while循环结束直接返回false。要是有环runner以一倍速跑在walker前面,就像在跑道上跑步一样总会相遇。代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; *

2020-05-30 16:44:05 124

原创 leetcode第21题合并两个有序链表C++

题目描述:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* m

2020-05-29 22:42:42 120

原创 leetcode第876题链表的中间结点C++

题目描述:给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。代码分析: slow=slow->next,fast=fast->next->next;当fast元素遍历完时,slow正好位于中间结点代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListN

2020-05-28 21:16:02 235

原创 leetcode第234题回文链表C++

题目描述:请判断一个链表是否为回文链表。代码:** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: bool isPalindrome(ListNode* head) {

2020-05-27 18:56:49 131

原创 leetcode第83题删除排序链表中的重复元素C++

题目描述:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。代码描述:为何while不嵌入if语句?因为if语句只能删除一个重复元素代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {pu

2020-05-26 21:33:47 197

原创 leetcode第203题移除链表元素C++

题目描述:删除链表中等于给定值 val 的所有节点。代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* removeElements(ListNode* h

2020-05-25 21:37:20 162

原创 leetcode第206题反转链表C++

题目描述:反转一个单链表。解题思路:首先创建一个链表用来输出数值,在while循环中创建一个节点来完成节点之间的转换。代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: Li

2020-05-24 21:30:10 121

原创 leetcode第1022题从根到叶的二进制C++

题目描述:给出一棵二叉树,其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是 13 。对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。解题思路:沿根节点遍历叶节点,将值转为二进制,然后递归函数代码:class Solution {public: int sumRootToLeaf(TreeNode* root

2020-05-23 20:24:36 250

原创 leetcode第589题N叉树的前序遍历C++

题目描述:给定一个 N 叉树,返回其节点值的前序遍历。解题思路:根节点的孩子子树的每个节点依次入栈,当一颗孩子子树的节点全部入栈后,依次出栈。遍历另一颗孩子子树####/*// Definition for a Node.class Node {public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; } Node

2020-05-22 20:06:11 567

原创 leetcode第404题左叶子之和C++

题目描述:计算给定二叉树的所有左叶子之和。解题思路:(1)先判断根节点的左孩子是否为空,若不为空判断是否为叶节点,若左孩子不是叶节点递归函数。(2)根节点的左孩子为空递归函数代码:class Solution {public: int sumOfLeftLeaves(TreeNode* root) { if(root==NULL) return 0; int sum=0; if(root->left!=NULL){

2020-05-21 21:34:12 287

原创 leetcode第563题二叉树的坡度C++

题目描述:给定一个二叉树,计算整个树的坡度。一个树的节点的坡度定义即为,该节点左子树的结点之和和右子树结点之和的差的绝对值。空结点的的坡度是0。整个树的坡度就是其所有节点的坡度之和。代码class Solution {public: int findTilt(TreeNode* root) { if(root==NULL) return 0; int res=0; postorder(root,res); ret

2020-05-20 21:42:38 183

原创 leetcode第965题单值二叉树C++

题目描述:如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。代码:class Solution {public: bool isUnivalTree(TreeNode* root) { if(root == nullptr) return true; if(root->left != nullptr && root->left->val !=

2020-05-19 20:36:04 164

原创 leetcode合并二叉树第617题C++

题目描述:给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。解题思路:(1)为两颗二叉树建两个对应的栈 (2)比较两颗二叉树根节点的左右孩子(3)如果二叉树的左右孩子一个值为空另一个值非空,取非空的值;如果左右孩子都非空,两个孩子入栈代码class Solution {public: TreeNode*

2020-05-18 21:37:18 238

原创 leetcode第107题二叉树的层序遍历C++

题目描述:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)##### 代码:class Solution {public: int depth(TreeNode*root){ if(root == NULL) return 0; return max(depth(root->left),depth(root->right)) + 1; } void le

2020-05-17 22:29:16 157

原创 leetcode第110题平衡二叉树C++

#####题目描述:给定一个二叉树,判断它是否是高度平衡的二叉树#####解题思路:(1)判断根节点是否为0 (2)计算出左右子树的高度 (3)比较左右子树的绝对值是否超过一#####代码:class Solution {public:int height(TreeNode root) {if(root == NULL)return 0;return max(height(root->left), height(root->right)) + 1;}bool isBalan

2020-05-16 22:44:47 145

原创 leetcode第101题对称二叉树C++

题目描述给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/ 2 2/ \ / 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1/ 2 2\ 3 3解题思路(1) 判断根节点是否为0 (2)二叉树对称根节点左孩子的右孩子会等于根节点的右孩子的左孩子 (3)建立两个队列,根节点左右孩子入队,然后出队比较左右孩子的值是否相同;若相同左子树的左右孩子入队,右子树的右左孩子

2020-05-15 23:21:21 200

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除