
LeetCode
文章平均质量分 52
此为代码练习讲解
随心uj
。
展开
-
[LeetCode] - 20. 有效的括号
题目链接 题目: 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 s 仅由括号 ‘()[]{}’ 组成 代码: typedef char STDataType; typedef struct Stack { STDataType* a; int top; int capacity; }ST; void StackInit(ST* ps); void Sta原创 2021-11-14 11:34:41 · 4156 阅读 · 0 评论 -
[Leetcode] - 141. 环形链表
题目链接 题目: 给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 如果链表中存在环,则返回 true 。 否则,返回 false 。 思路:使用快慢指针 slow 和 fast 指向链表的开始,slow 一次走一步,fa原创 2021-11-13 21:01:05 · 101 阅读 · 0 评论 -
[LeetCode] -160. 相交链表
题目链接 题目: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 问题: 判断两个链表是否相交? 如果相交,求交点。 思路: 思路1:暴力求解 - 穷举 依次取A链表中的每个节点跟B链表的所有节点比较,如果有地址相同的节点,就是相交,第一个相同的交点。 时间复杂度为O(N^2) 思路2:要求优化到O(N) 尾节点相同就是相交,否则就不想交。 求交点: 长的链表先走(长度差)步,再同时走,第一个相同就是交点原创 2021-11-13 16:52:57 · 375 阅读 · 0 评论 -
[LeetCode] - 206. 反转链表
题目链接 题目: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 过程: 1.struct ListNode* next = cur->next; 2.cur->next = newhead; 3.newhead = cur; cur = next; 以此类推: 结束while循环。 代码: /** * Definition for singly-linked list. * struct ListNode { * int val; *原创 2021-11-13 15:31:18 · 105 阅读 · 0 评论 -
[LeetCode] - 21. 合并两个有序链表
题目链接 题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 过程: 当 l2 小于 l1 并且 head 为空时,将head 和 tail 指向 l2。然后l2 指向它的下一个结点。 l1 小于 l2,tail 下一个结点指向 l1,然后 tail = l1,l1 = l1->next。 以此类推: 代码: /** * Definition for singly-linked list. * struct ListNode原创 2021-11-13 10:53:03 · 679 阅读 · 0 评论 -
[LeetCode] - 965. 单值二叉树
题目 题目链接 /** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ bool isUnivalTree(struct TreeNode* root){ if (root==NULL) { return true; }原创 2021-11-11 09:19:50 · 78 阅读 · 0 评论