leetcode
哒嘎哇
这个作者很懒,什么都没留下…
展开
-
数据结构:堆
一、首先堆是一棵完全二叉树,关于完全二叉树和满二叉树:如果一个二叉树的任何节点,要么是叶子节点,要么左右子树均非空,则这棵二叉树称做满二叉树(full binary tree)如果一个二叉树最多只有最下面的两层节点度数可以小于2,并且最下面一层的节点都集中在该层最左边的连续位置上,则此二叉树称做完全二叉树(complete binary tree)堆分为大顶堆和小顶堆:大顶堆就是堆顶(第一个元素)始终存放的是这组元素中的最大元素,小顶堆就是堆顶元素是最小元素。二、堆是一颗原创 2022-04-19 15:58:04 · 170 阅读 · 0 评论 -
Leetcode--矩阵中的路径
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。例如,在下面的 3×4 的矩阵中包含单词 "ABCCED"(单词中的字母已标出)。示例 1:输入:board = [["A","B","C","E"],["S","F","C","S"],["A原创 2022-03-08 13:17:53 · 106 阅读 · 0 评论 -
Leetcode--两个链表的第一个公共节点
输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。双指针法因为两个链表的长度不相等吗,互相走完第一遍之后,换成从对方的头开始走,这样第二遍的时候大家就都是同步的了,到最后如果没找到就会都变成nil,满足了循环的退出条件func getIntersectionNode(headA, headB *ListNode) *ListNode { if headA==nil || headB==nil{ return nil原创 2022-03-05 19:29:54 · 244 阅读 · 0 评论 -
Leetcode--合并 两个排序的链表
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4双指针func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode { if l1 == nil { return l2 } if l2 == nil { return l1 } l3 := &L原创 2022-03-05 16:36:27 · 141 阅读 · 0 评论 -
Leetcode--双指针删除链表的节点
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.说明:题目保证链表中节点的值互不相同 若使用 C 或 C++ 语言,你不需要free或delete被删除的节点func deleteNode(head *ListNo...原创 2022-03-03 20:11:17 · 647 阅读 · 0 评论 -
Leetcode--最长不含重复字符的子字符串
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3复杂度两个方法都一样时间复杂度O(n)空间复杂度O(1)一、动态规划+哈希表条件是当前的子字符串的头和尾不是重复字符,靠重复字符的位置相减,得到的结果与子字符串长度tmpmax比较func lengthOfLongestSubstring(s string) int {..原创 2022-03-02 22:18:30 · 7228 阅读 · 0 评论 -
Leetcode--把数字翻译成字符串
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi“动态规划func translateNum(num int) int { width :=.原创 2022-02-28 17:08:59 · 141 阅读 · 0 评论 -
Leetcode--复杂链表的拷贝
请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。迭代+节点拆分法时间 O(n)空间 O(1)func copyRandomList(head *Node) *Node { if head == nil { return nil } for node := head; node != nil; node = node.Next.Next原创 2022-02-11 16:52:00 · 166 阅读 · 0 评论 -
Leetcode--反转链表
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL双100%func reverseList(head *ListNode) *ListNode { if head == nil { return nil } var pre *ListNode cur := head for cur !原创 2022-02-10 18:21:54 · 251 阅读 · 0 评论 -
Leetcode--从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]递归法时间100%空间33%?func reversePrint(head *ListNode) ([]int) { if head == nil {return nil} return append(reversePrint(head.Next), head.Val)}辅助栈法时间100%空间88%func reverse原创 2022-02-10 01:10:08 · 319 阅读 · 0 评论