
算法
每日一题,加油!这边主要用go语言来实现
可乐加辣椒ヾ(黄新东阳)
学到就要教人,得到就要助人。
---如有错误或者咨询 请联系QQ:405420415 欢迎共同探讨、提高。
展开
-
Floyd-Warshall[弗洛依德]算法
1.定义概览Floyd-Warshall算法(Floyd-Warshall algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包。Floyd-Warshall算法的时间复杂度为O(N3),空间复杂度为O(N2)。2.算法原理Floyd算法是一个经典的动态规划算法。用通俗的语言来描述的话,首先我们的目标是寻找从点i到点j的最短路径。从动态规划的角度看问题,我们需要为这个目标重新做一个诠释(这个诠释正是动态规划最富创造力的精华所原创 2020-10-24 12:36:27 · 5951 阅读 · 0 评论 -
Java算法实现之:查找常用字符
1.题目详情:给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。示例 1:输入:[“bella”,“label”,“roller”]输出:[“e”,“l”,“l”]示例 2:输入:[“cool”,“lock”,“cook”]输出:[“c”,“o”]提示:1 <= A.length <= 1001原创 2020-10-14 18:56:07 · 266 阅读 · 0 评论 -
Java算法实现之:二叉搜索树的最小绝对差
1.题目详情:给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。示例:输入:13/2输出:1解释:最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2.题目解答/** * Defi原创 2020-10-12 12:45:12 · 259 阅读 · 1 评论 -
Java算法实现之:完全二叉树的节点个数
1.题目详情:给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例:输入:1/ 2 3/ \ /4 5 6输出: 6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/count-complete-tree-nodes著作权归领扣原创 2020-10-10 09:18:20 · 381 阅读 · 0 评论 -
Java算法实现之:环形链表 II(返回入环第一个节点)
1.题目详情:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos原创 2020-10-09 17:50:37 · 433 阅读 · 0 评论 -
Java算法实现之:环形链表
1.题目详情:给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?示例 1:输入:head = [3,2,0原创 2020-10-09 14:44:43 · 278 阅读 · 0 评论 -
Java算法实现之:二叉搜索树中的插入操作
1.题目详情:给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据保证,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。例如, 给定二叉搜索树: 4 / \ 2 7 / \ 1 3和 插入的值: 5你可以返回这个二叉搜索树: 4 / \原创 2020-09-30 11:32:13 · 314 阅读 · 0 评论 -
Java算法实现之:二叉树的后续遍历
1.题目详情:给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2.题目解答/*** Def原创 2020-09-29 10:31:18 · 172 阅读 · 0 评论 -
java算法实现之:第 k 个缺失的正整数
1.题目详情:给你一个 严格升序排列 的正整数数组 arr 和一个整数 k 。请你找到这个数组里第 k 个缺失的正整数。示例 1:输入:arr = [2,3,4,7,11], k = 5输出:9解释:缺失的正整数包括 [1,5,6,8,9,10,12,13,...] 。第 5 个缺失的正整数为 9 。示例 2:输入:arr = [1,2,3,4], k = 2输出:6解释:缺失的正整数包括 [5,6,7,...] 。第 2 个缺失的正整数为 6 。提示:1 <原创 2020-09-02 23:28:52 · 568 阅读 · 0 评论 -
java算法实现之:整数反转
1.题目详情(摘自LeetCode)给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。2.错误题解第一次做到这个题目是在公司转java的笔试题中,一开始我的接替思路是转换为字符串原创 2020-09-02 23:03:54 · 897 阅读 · 0 评论 -
Go算法练习—括号生成
一. 题目描述数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]二.代码详解package mainimport "fmt"func generateParenthesis(n int) []string...原创 2020-04-10 09:46:27 · 239 阅读 · 0 评论 -
Go算法练习—回文数
回文数一.题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它...原创 2020-03-14 23:44:25 · 290 阅读 · 0 评论 -
Go算法练习—多数元素
多数元素一.题目描述:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入: [3,2,3]输出: 3示例2:输入: [2,2,1,1,1,2,2]输出: 2二.代码详解:func majorityElement(nums []int...原创 2020-03-13 17:32:15 · 222 阅读 · 0 评论 -
Go算法练习—二叉树的前序遍历
二叉树的前序遍历题目:给定一个二叉树,返回它的前序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,2,3]题目解答:/** * Definition for a binary tree node. * type TreeNode struct { * Val int * ...原创 2020-03-12 23:47:13 · 282 阅读 · 0 评论 -
Go算法练习—二叉树的中序遍历
二叉树的中序遍历题目描述:给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]代码解答:/** * Definition for a binary tree node. * type treeNode struct { * Val int * ...原创 2020-03-11 17:17:34 · 206 阅读 · 0 评论 -
Go算法练习—二叉树的直径
二叉树的直径题目描述:给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回3, 它的长度是路径 [4,2,1,3] 或者[5,2,1,3]。注意...原创 2020-03-10 17:10:54 · 209 阅读 · 0 评论 -
Go算法练习—滑动窗口最大值
滑动窗口最大值一.题目描述给定一个数组 nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释: 滑动窗口的位置 ...原创 2020-03-09 23:02:07 · 312 阅读 · 0 评论 -
Go算法练习—无重复字符的最长子串
无重复字符的最长子串一. 题目介绍给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3...原创 2020-03-09 16:20:44 · 449 阅读 · 0 评论