![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
Pecto
这个作者很懒,什么都没留下…
展开
-
【贪心算法II】股票问题(动态规划)
股票问题原创 2022-06-30 10:52:13 · 212 阅读 · 0 评论 -
【贪心算法V】处理多维度数据时,需要先排序一个维度,再考虑其他维度
身高排列原创 2022-06-20 11:44:57 · 145 阅读 · 1 评论 -
【贪心算法IV】跳跃游戏
跳跃游戏类原创 2022-06-14 11:37:23 · 59 阅读 · 0 评论 -
【贪心算法III】分发糖果
分发糖果原创 2022-06-14 11:31:07 · 59 阅读 · 0 评论 -
【贪心算法I】分发饼干、摆动序列
分发饼干,摆动序列原创 2022-06-08 11:47:53 · 128 阅读 · 0 评论 -
【算法类】螺旋矩阵相关-golang
螺旋矩阵注意点模拟方式实现,注意遍历顺序及边界条件从左到右从上到下从右到左从下到上重点,注意统一遍历方式,左闭右闭区间生成螺旋矩阵func spiralArrayV(n int) [][]int{ // 得到1到n^2的螺旋正矩阵 // 模拟情形,统一边界遍历方式,均左闭右闭 dp := make([][]int, n) for i, _ := range dp { dp[i] = make([]int, n) } top, bottom := 0, n-1 left原创 2022-04-02 11:13:59 · 151 阅读 · 0 评论 -
【算法】排序类III-golang
排序算法III归并排序func MergeSortV(nums []int) []int{ // 归并排序 // 递归终止条件 n := len(nums) if n < 2 { return nums } // 分治 k := n / 2 // 单层算法 merge := func(left, right []int) []int{ // 额外空间 m, n2 := len(left), len(right) tmp := make([]int, 0) va原创 2022-03-30 10:56:55 · 1031 阅读 · 0 评论 -
【算法】排序类II-golang
排序算法II插入排序func InsertSortV(nums []int) { // 插入排序 for i := 1; i < len(nums); i++ { // 认为nums[:i]为有序,判断nums[i]插入位置 // 从无序数组中拿每一个元素,插入有序数组中相应位置 for j := i; j > 0 && nums[j] < nums[j-1]; j--{ nums[j], nums[j-1] = nums[j-1], nums[j原创 2022-03-29 10:50:34 · 473 阅读 · 0 评论 -
【链表算法】单链表--golang
链表链表的用处对比数组,在数据量不固定时,链表便于插入和删除,查询效率较低golang声明单链表类型// 定义单链表type ListLinkNode struct { Val int Next *ListLinkNode}删除单链表中的节点// 链表的操作// 删除节点func DeleteFromSingleLinkV(node *ListLinkNode, val int) *ListLinkNode { // 定义虚拟头节点 root := &ListLi原创 2022-04-06 10:46:09 · 324 阅读 · 0 评论 -
【回溯算法iv】golang-数独问题
数独问题原创 2022-06-06 10:58:56 · 117 阅读 · 0 评论 -
【回溯算法iii】全排列,拆分单词
排列问题,拆分单词原创 2022-05-25 16:00:44 · 54 阅读 · 0 评论 -
【回溯算法ii】golang-经典电话号码组合问题
按照9键电话号码输出符合条件的组合// 9键,数字字符串能够转换的字母组合func ChangeNumToCombination(digits string) []string { // “23”,宽度是“abc”,深度是2 if len(digits) == 0 { return []string {} } numMap := map[string]string{ "2": "abc", "3": "def", "4": "ghi", "5": "jkl", "6":原创 2022-05-19 10:37:45 · 162 阅读 · 0 评论 -
【回溯算法i】golang-组合问题
回溯算法回溯算法主要解决的问题按一定规律组合问题按一定规律分割回溯算法的本质回溯算法主要是为了解决for嵌套,当暴力解法需要多层for嵌套时,如50层for循环,此时需要使用回溯解决;回溯的对象可以归类为N叉树,一层for循环遍历宽度,之后递归遍历深度回溯算法模板func xxx (参数) { if (终止条件) { xxx return } for 遍历宽度 { xx func_name(参数) // 递归 xxx // 回溯 }}组合问原创 2022-05-18 10:19:20 · 206 阅读 · 0 评论 -
【二叉树算法】golang-遍历、翻转、对称
二叉树遍历二叉树// 二叉树遍历func fontForBinaryTree(node *TreeNode) []int{ // 递归方式 res := make([]int, 0, 0) if node == nil { return res } // 递归函数的传参及返回值 var in func(n *TreeNode) in = func(n *TreeNode) { // 递归终止条件 if n == nil { return } // 前序遍历单层逻原创 2022-04-24 11:08:29 · 415 阅读 · 0 评论 -
【二叉树算法】golang-最近公共祖先问题
二叉树最近公共祖先问题一般二叉树常规二叉树无序,故需使用回溯方式,自底向上遍历整棵树,找到符合条件的节点// 二叉树的最近公共祖先func findNearAncestor(node, p, q *TreeNode) *TreeNode { // 从叶子节点向上遍历整个二叉树 return checkInNode(node, p, q)}func checkInNode(node, p, q *TreeNode) *TreeNode { if node == p || node ==原创 2022-05-10 11:11:58 · 233 阅读 · 0 评论 -
【二叉树算法】golang-二叉搜索树
二叉搜索树二叉搜索树是一个有序树:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉搜索树......原创 2022-05-07 11:31:05 · 241 阅读 · 0 评论 -
【二叉树算法】golang--构造二叉树
构造二叉树算法逻辑从前序或后序数组中,找到根节点Val值,对应为第一个元素或最后一个元素以根节点为切割点,分割中序数组、前/后序数组,注意先分割中序递归方式,得到最终结果疑问:为什么要递归当将数组分为左子树Val和右子树Val值后,后面的步骤和之前是完全一致的。均为找到根节点,分割左右子树所以采用递归方式通过前序遍历和中序遍历数组构造二叉树// 通过前序遍历和中序遍历构造二叉树func buildBinaryTreeII(preorder, inorder []int) *T原创 2022-04-29 11:31:29 · 1084 阅读 · 0 评论