数据结构与算法
数据结构与算法
leetcode每日一题写了吗
记录学习笔记、技术分享。
ps:如果文章内容涉及侵权,联系wcj999666333@163.com删除
展开
-
各种排序适合的场景
各种排序适合的场景大多数情况快速排序包含大量的重复元素三路快排大部分数据离他正确的位置很近,近乎有序的插入排序数据的取值范围有限,如:学生成绩排序计数排序稳定的排序归并排序数据使用链表存储时归并排序数据量太大,或内存太小使用外排序...原创 2020-09-24 21:32:37 · 811 阅读 · 0 评论 -
详细分析过程:分支限界法解决01背包问题
1. 问题描述设有n个物体和一个背包,物体i的重量为wi价值为pi ,背包的载荷为M, 若将物体i(1<= i <=n)装入背包,则有价值为pi . 目标是找到一个方案, 使得能放入背包的物体总价值最高.设N=3, W=(16,15,15), P=(45,25,25), C=30(背包容量)2. 队列式分支限界法可以通过画分支限界法状态空间树的搜索图来理解具体思想和流程每一层按顺序对应一个物品放入背包(1)还是不放入背包(0)步骤:① 用一个队列存储活结点原创 2020-06-16 11:13:58 · 14839 阅读 · 5 评论 -
动态规划算法解决:01背包问题,java实现
/** * @Author WCJ * @Description **//* * 0-1背包问题:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高 * * 以下用一个问题作为案例 * 挖矿问题 * 5座金矿,每座金矿的储量不同,需要参与挖矿的工人数也不同。 * 参与挖矿的总工人数是10,每座金矿要么全挖,要么不挖,不能 * 派一半人挖一半矿。求应选择挖哪几座金矿,才能得到尽可能多的黄金,(求能挖的最多黄金)。 * 金矿数据:1:50原创 2020-05-13 09:39:53 · 1260 阅读 · 0 评论 -
使用java实现动态规划法-矩阵链乘(java实现,很清楚)
public class MatrixChain { private int[][] arr; private static int[][] s; private int[] p; public MatrixChain(int[] p,int[][] arr,int[][] s) { this.p=p; this.arr=arr; this.s=s; } public int[][] matri原创 2020-05-11 16:48:27 · 539 阅读 · 0 评论 -
leetcode-2 两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。原创 2020-12-14 09:22:50 · 899 阅读 · 0 评论 -
基于Java的并查集
需求描述 假设有n个村庄,有些村庄之间有连接的路,有些村庄之间并没有连接的路 设计一个数据结构,能够快速执行2个操作: 查询2个村庄之间是否有连接的路连接2个村庄 使用数组、链表、平衡二叉树、集合(Set),查询、连接的时间复杂度都是: O(n) 并查集能够办到查询、连接的均摊时间复杂度都是 O(α(n)), α(n) < 5 并查集非常适合解决这类“连接”相关的问题 基础概念 并查集也叫作不相交集合(Disjoint Set) 并查集有2个核心操作查找(Fin原创 2020-12-03 09:30:33 · 740 阅读 · 0 评论