
算法
「已注销」
深感抱歉
展开
-
背包问题详解
本文是我大二算法分析实验的综合大实验,可能跟大家的比起来难度微不足道,希望能对你有帮助????原创 2020-06-21 23:17:36 · 1780 阅读 · 2 评论 -
矩阵连乘问题(从动态规划超详细解析)
概述本文将先介绍动态规划,再分析矩阵连乘问题,对动态规划了解或者直接想抄算法分析实验报告的小伙伴可选择性的直接跳到下面。动态规划1.概念动态规划(英语: Dynamic programming,简称 DP) 是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。那动态规划算法要表达的核心思想到底是什么?我们来看一个例子A : "2+2+2+2+2=? 请问这个等式的值是多少? "B : "计算 ing 。。。。。。结果为原创 2020-05-10 10:03:23 · 7602 阅读 · 0 评论 -
L型骨牌覆盖问题
概述本文承接上文《求n个元素的全排序(从分治思想超详细解析)》,将再用一个详细的案例来带我们更深入的理解分治思想在解决实际问题中的体现。同时,在后文我会把将前文的知识整合起来写成《算法分析与设计实验》的实验报告2–递归与分治策略应用基础,分享给大家。同为大学狗的可以借鉴一下????的微薄之作L型骨牌覆盖问题1.问题说明在一个 2^k * 2^k 方格组成的棋盘中,若恰有一个方格与其他方格不...原创 2020-05-08 15:30:55 · 4104 阅读 · 0 评论 -
求n个元素的全排序(从分治思想超详细解析)
概述这是一道典型的数据结构考研题,我看目前网上大部分博主讲的都不太通俗易懂,代码质量也参差不齐,本博文将用大白话帮你理解这道典型的分治思想算法题。1.分治思想1.1定义分治算法在维基百科上的定义为:在计算机科学中, 分治法是建基于多项分支递归的一种很重要的算法范式。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题...原创 2020-05-08 11:26:13 · 3325 阅读 · 1 评论 -
堆,图,字符串匹配算法超详细讲解
文章目录概述堆1.定义2.堆的存储结构3.堆的实现3.1创建堆3.2插入元素3.3删除堆顶元素3.4时间复杂度分析4.堆的应用(堆排序)4.1建堆4.2排序4.3复杂度分析图1.概念2.图的存储方式2.1邻接矩阵存储图2.2邻接表存储图3.图的应用-搜索算法3.1定义图的结构3.2广度优先搜索 BFS3.3深度优先搜索 DFS字符串匹配/查找算法1.BF算法1.1原理1.2代码1.3时间复杂度分析...原创 2020-05-06 16:27:04 · 477 阅读 · 0 评论 -
java实现二分查找
概述本文是对上篇博客的后续补充,是的,我们迎来了五月,今天我们来介绍三大算法之一二分查找。二分查找(Binary Search)算法,也叫折半查找算法。二分查找是一种非常简单易懂的快速查找算法,其思想在生活中随处可见,比如朋友聚会的时候爱玩的一个猜数游戏,我随机写一个 0-100 之间的数字,然后大家依次来猜,猜的过程中大家每猜一次我都会告诉大家猜大了还是猜小了,直到有人猜中为止,猜中的人会...原创 2020-05-01 16:13:31 · 896 阅读 · 0 评论 -
复杂度分析,递归算法,排序算法最强入门攻略
文章目录概述1.复杂度分析1.1时间复杂度1.1.1概念1.1.2时间复杂度分析方法1.1.3常见的时间复杂度1.1.4最好/最坏/平均时间复杂度分析1.2空间复杂度2.递归算法2.1概念即条件2.2递归的问题2.2.1堆栈溢出2.2.2重复计算2.3递归的案例2.3.1阶乘问题2.3.2目录拷贝3.排序算法3.1评判排序算法好坏的标准3.1.1时间复杂度3.1.2空间复杂度3.1.3算法稳定性3...原创 2020-04-30 22:41:07 · 699 阅读 · 0 评论 -
leetcode 206.反转链表(链表)
题目描述反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL解法1.迭代图解:代码实现:public ListNode reverseList(ListNode head) { //定义两个结点:前结点,当前结点 ListNode pr...原创 2020-04-28 10:19:13 · 230 阅读 · 0 评论 -
线性表数据结构(含源码分析)
文章目录概述1.数组1.1概念1.2逻辑结构和物理结构1.2.1定义1.2.2数组元素的访问1.2.3数组下标为什么从 0 开始1.3特点1.3.1高效访问1.3.2低效插入1.3.3低效删除(解决办法)1.4应用(ArrayList源码分析)1.4.1添加元素的动态扩容1.4.2获取元素1.4.3ArrayList和数组的优劣2.链表2.1概念2.2存储结构2.3链表类型2.3.1单链表2.3....原创 2020-04-28 10:16:20 · 471 阅读 · 0 评论 -
leetcode 2.两数相加(链表)
题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 ...原创 2020-04-27 12:08:01 · 316 阅读 · 0 评论 -
leetcode 1.两数之和(Hash表)
题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解法1.暴...原创 2020-04-27 12:06:21 · 233 阅读 · 0 评论