算法题
光哥2020
这个作者很懒,什么都没留下…
展开
-
DP算法题收集汇总
三种基本背包问题 一 0/1背包问题 问题描述: 有n件物品和容量为m的背包 给出i件物品的重量以及价值求解让装入背包的物品重量不超过背包容量 且价值最大 。 特点:<br1.这是最简单的背包问题,特点是每个物品只有一件供你选择放还是不放。 ① 二维解法 设f[i][j]表示前 i 件物品 总重量不超过 j 的最大价值 可得出状态转移方程 f[i][j]=max{f[i-1][j-a[i]]+b[i], f[i-1][j]} 代码: for(int i=1;i<=n;i++)原创 2021-03-02 19:48:01 · 800 阅读 · 0 评论 -
二叉树算法题
package code import ( "fmt" "math" ) //无实际意义、讲其他操作绑定到一起而已 type BinaryTree struct { } //前序遍历 //前序遍历的顺序是 根 -----> 左子树 -----> 右子树 //中序遍历 //中序遍历的顺序是 左子树 -----> 根 ------> 右子树 //后序遍历 //后序遍历的顺序是 左子树 -----> 右子树 -----> 根 type TreeNode str.转载 2021-03-02 19:45:39 · 109 阅读 · 0 评论 -
排序算法题
package code func BinSearch(nums []int, target int) int { left := 0 right := len(nums) - 1 for left <= right { mid := (right + left) / 2 switch { case nums[mid] == target: return mid case nums[mid] > target: right = mid - 1 case .原创 2021-03-02 19:41:53 · 86 阅读 · 0 评论 -
链表算法题
package code import ( "fmt" ) /* 链表的结构 */ type ListNode struct { Val int Len int Next *ListNode } /* 输出链表 */ func PrintLink(p *ListNode) { for p != nil { fmt.Printf("%d->",p.Val) p = p.Next } fmt.Printf("nil \n") } /** 数组转链表构造链表 .原创 2021-03-02 19:39:41 · 93 阅读 · 0 评论 -
最小顶堆算法题
最小顶堆算法题, package code /* 最大堆进行升序排序的基本思想: ① 初始化堆:将数列a[1...n]构造成最大堆。 ② 交换数据:将a[1]和a[n]交换,使a[n]是a[1...n]中的最大值;然后将a[1...n-1]重新调整为最大堆。 接着,将a[1]和a[n-1]交换,使a[n-1]是a[1...n-1]中的最大值;然后将a[1...n-2]重新调整为最大值。 依次类推,直到整个数列都是有序的。 下面j,通过图文来解析堆排序的实现过程。注意实现中用到了"数组实现的二叉堆的原创 2021-03-02 19:38:26 · 188 阅读 · 0 评论