leetCode
a...Z
golang php rust
展开
-
算法-二叉树011-二叉树的前、中、后序遍历
二叉树首先,二叉树是一种「数据结构」。简单来说,就是一个包含节点,以及它的左右孩子的一种数据结构。遍历方式先序遍历,根节点-> 左孩子 -> 右孩子 的方式遍历,即「先序遍历」,每次遍历跟节点1 -> 2 -> 4 -> 5 -> 3 -> 6 -> 7中序遍历,左孩子-> 根节点->右孩子 的方式遍历,即「中序遍历」,遍历结果为4 -> 2 -> 5 -> 1 -> 6 -> 3 -> 7后.原创 2021-08-18 18:18:06 · 78 阅读 · 0 评论 -
算法-链表010-二叉树及BST寻找最近公共祖先
二叉树的最近公共祖先示例 1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:3解释:节点 5 和节点 1 的最近公共祖先是节点 3 。示例 2:输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4输出:5解释:节点 5 和节点 4 的最近公共祖先是节点 5 。因为根据定义最近公共祖先节点可以为节点本身。示例 3:输入:root = [1,2], p = 1, .原创 2021-08-13 17:32:44 · 189 阅读 · 0 评论 -
算法-链表009-验证二叉搜索树
更多 好文 vx。golang技术实验室二叉树搜索树每个节点至多有两个子节点子节点左边的节点必须小于根节点子节点右边的元素必须全部大于根节点题给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 2原创 2021-08-07 11:13:57 · 79 阅读 · 0 评论 -
算法-链表009-几数之和
更多好文 vx golang技术实验室package mainimport ( "fmt" "sort")/** 两数之和 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2: 输入:nums = [3,2,4], target = 6 输出:[1,2] 示例 3: 输入:nums = [3,3], target = 6 输出原创 2021-07-29 18:52:02 · 58 阅读 · 0 评论 -
有效字符异位词
更多好文 vx golang技术实验室第一种用 map存储,key是对应的值,value是计数结果func isAnagram1(s string, t string) bool { if len(s) != len(t){ return false } var strMap = make(map[rune]int64) for _ ,v := range s { strMap[v] ++ } for _ ,v := range t{ if _, ok := strMap[原创 2021-07-27 18:57:45 · 70 阅读 · 0 评论 -
算法-链表007-滑动窗口最大值
golang技术实验室给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。 示例 1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解释:滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5原创 2021-07-19 18:30:35 · 97 阅读 · 0 评论 -
算法-链表006-检查字符串是否全匹配
更多好文vxgolang技术实验室检查全部括号是否匹配leetcode20给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。解题思路如果有一个右括号和前一个是不匹配的,就是不匹配将左括号和右括号分开左括号入栈,遇到右括号和栈顶的元素对比防止全部左括号和全部右括号的情况此时遇到第一个右括号和栈顶的元素对比,如果满足,消除栈顶的这原创 2021-07-12 18:58:03 · 173 阅读 · 1 评论 -
算法-链表005-删除或者输出链表的倒数第k个元素
删除or输出链表倒数的第k个元素题目描述给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]获取链表长度,遍历拼接/** 思路1 遍历链表,获取长度l 再次遍历链表,第k个坐标为l-1-k 时间复杂度O(3n),原创 2021-07-10 17:17:54 · 106 阅读 · 0 评论 -
算法-链表004-单链表是否相交及交点
更多好文vxgolang技术实验室两个链表是否相交及交点链表结构//构造链表 n1 := new(nodeList) n1.val = 1 n2 := new(nodeList) n2.val = 2 n3 := new(nodeList) n3.val = 3 n4 := new(nodeList) n4.val = 4 n5 := new(nodeList) n5.val = 5 n6 := new(nodeList) n6.val = 6 n1.Nex原创 2021-07-10 14:09:09 · 82 阅读 · 1 评论 -
算法-003-链表是否有环及环的入口
更多好文vgolang技术实验室给定链表,判断链表是否有环及环的位置如下第一种-时间判断给懂时间1s或者0.5s,来判定是否循环完毕。此方法会有误差,如果链表足够长,并且没有环,而超过时间就会认定是有环第二种-set查重设置map集合,将每次循环的链表元素地址存储在map中,当出现在map中存在的情况时候,就是存在环,而且能找出环的入口//-- ----------------------------//--> @Description 链表是否有环 及环的入口//-->原创 2021-07-09 15:43:10 · 149 阅读 · 0 评论 -
链表元素两两替换
leetCode27题给定链表给定1-2-3-4-5-6-7输出2-1-4-3-6-5-7思路双指针,通过三个指针链表,pre、cur、nex来不断移动和拼接链表调试代码package mainimport ( "fmt" "os")/** tempHead = &ListNode{0,nil} tempHead.Next = head pre,cur,nex = tempHead,head,head.Next pre = 0-1-2-3-4-5-6-7原创 2021-07-05 14:25:58 · 161 阅读 · 0 评论 -
链表001-反转单链表
题目输入 1->2->3->4->null 输出 5->4->3->2->1->null思路思路 把指针指向前一个元素,后边的不断向前移动,并改变方向pre 就是cur的最前边的那位(pre=cur)cur就是当前元素后面链表元素(cur=cur.Next)cur.Next肯定是pre(curl.Next=pre)原因是cur赋值给了pre过程代码type ListNode struct { Val int Next *Li原创 2021-06-29 16:40:22 · 74 阅读 · 0 评论