工厂 电商网站建设,浙江省建设厅官网,网站空间权限,保定哪做网站好1.环形链表 ll 142. 环形链表 II 给定一个链表的头节点 head #xff0c;返回链表开始入环的第一个节点。 如果链表无环#xff0c;则返回 null。 如果链表中有某个节点#xff0c;可以通过连续跟踪 next 指针再次到达#xff0c;则链表中存在环。 为了表示给定链表中的环…1.环形链表 ll142. 环形链表 II给定一个链表的头节点head返回链表开始入环的第一个节点。如果链表无环则返回null。如果链表中有某个节点可以通过连续跟踪next指针再次到达则链表中存在环。 为了表示给定链表中的环评测系统内部使用整数pos来表示链表尾连接到链表中的位置索引从 0 开始。如果pos是-1则在该链表中没有环。注意pos不作为参数进行传递仅仅是为了标识链表的实际情况。不允许修改链表。示例 1输入head [3,2,0,-4], pos 1输出返回索引为 1 的链表节点解释链表中有一个环其尾部连接到第二个节点。示例 2输入head [1,2], pos 0输出返回索引为 0 的链表节点解释链表中有一个环其尾部连接到第一个节点。示例 3输入head [1], pos -1输出返回 null解释链表中没有环。数据结构初阶阶段我们通过证明一个指针从头开始走一个指针从相遇点开始走会在入口点相遇理解证明都会很麻烦。这里我们使用set查找记录解决非常简单方便这里体现了set在解决一些问题时的价值完全是降维打击。这里我们利用set插入的性质返回的pair(iterator,bool)(可回顾上一章中C_数据结构_map与set-CSDN博客)class Solution { public: ListNode *detectCycle(ListNode *head) { setListNode* s; ListNode*curhead; while(cur){ //插入成功返回的迭代器iterator,bool auto rets.insert(cur); if(ret.secondfalse){ return cur; } curcur-next; } return nullptr; } };平衡二叉树题目110. 平衡二叉树 - 力扣LeetCode给定一个二叉树判断它是否是平衡二叉树示例 1输入root [3,9,20,null,null,15,7]输出true示例 2输入root [1,2,2,3,3,null,null,4,4]输出false示例 3输入root []输出truet题解平衡二叉树是指该树所有节点的左右子树的深度相差不超过 1。这与我们探索二叉树的高度相似为NULL则返回0不为NULL则最大的左(右)子树加1在进行比较1int height(struct TreeNode* root) { if (root NULL) { return 0; } else { return fmax(height(root-left), height(root-right)) 1; } } bool isBalanced(struct TreeNode* root) { if (root NULL) { return true; } else { return fabs(height(root-left) - height(root-right)) 1 isBalanced(root-left) isBalanced(root-right); } }