![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法 刷题 数据结构
文章平均质量分 52
对各种算法的学习
daoyang1024
这个作者很懒,什么都没留下…
展开
-
Python 实现各个基础算法模板
Python 实现各个基础算法模板包括题目,思路,模板,应用一、二分模板题目地址题目:给你一个m* n的矩阵grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。请你统计并返回grid中负数的数目。思路:找到每排的第一个负数,后面就都是负数了,最后累计负数数目模板:def binary_search(nums, target): left = 0 right = len(nums) while left < right...原创 2020-08-25 19:45:29 · 1445 阅读 · 1 评论 -
数据结构_二叉树的构建与遍历
c++实现二叉树的构建与遍历二叉树数据示例:a(b(,d),c(e(g),f))代码:// 二叉树.cpp: 定义控制台应用程序的入口点。//#include "stdafx.h"#include#include#includeusing namespace std;#define MaxSize 100char gnodeString[100];原创 2018-01-18 10:08:39 · 395 阅读 · 0 评论 -
C++ 友元函数实现复数的运算
C++ 友元函数实现复数的运算#include class imaginary { public: imaginary(double r,double i); friend imaginary add(const imaginary &c1,const imaginary &c2); friend imaginar原创 2017-12-28 23:02:40 · 1905 阅读 · 0 评论 -
C++ 运算符重载
运行环境 VC6.0运算符重载"#include#include#define max 20 class MyString{public: char *str; MyString(char *s); friend ostream& operator << (ostream&, MyString&); friend MyString operator +原创 2017-12-28 22:59:19 · 112 阅读 · 0 评论 -
数据结构_静态链表直接插入排序
静态链表实现直接插入排序(C++)是静态链表和直接插入排序的结合链表的数据结构,直接插入排序算法的思想// 静态链表插入排序.cpp: 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing namespace std;class node {public : int data; node *next;};原创 2017-12-28 22:23:06 · 890 阅读 · 0 评论 -
数据结构_静态链表
C++实现静态链表注意理解headp,searchp,followp,newnodep的角色与功能.特别是searchp,followp.// 静态链表.cpp: 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing namespace std;class node{public: int data; node原创 2017-12-28 21:44:44 · 137 阅读 · 0 评论 -
数据结构_基本排序算法
直接插入排序(c++实现)简单选择排序(c++实现)冒泡排序(c++实现)// 基本排序算法.cpp: 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing namespace std;void directinsertsorting(int *data, int size) //直接插入排序{ int temp原创 2017-12-28 19:15:33 · 138 阅读 · 0 评论 -
数据结构_队列
c++类模板实现环队// 队列.cpp: 定义控制台应用程序的入口点。// 环队具有许多优点,所以选择环队进行实现#include "stdafx.h"#includeusing namespace std;template class Queue{private: Type * queue; //队列空间具体实现 int front, rear; //队头队原创 2017-12-26 22:18:47 · 165 阅读 · 0 评论 -
数据结构_栈
c++类模板实现栈// 栈.cpp: 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing namespace std;templateclass Stack{public: Stack(); //创建一个空栈 Stack(int size); //创建一个size大的栈 ~Stack(); //回原创 2017-12-26 21:26:18 · 136 阅读 · 0 评论 -
动态规划解决问题例子
动态规划解决问题例子题目:最长回文子串,https://leetcode-cn.com/problems/longest-palindromic-substring/动态规划法# 动态规划法class Solution: def longestPalindrome(self, s: str) -> str: n = len(s) dp = [[False] * n for _ in range(n)] start = 0原创 2021-03-09 16:10:43 · 165 阅读 · 0 评论 -
自动机解决问题例子
自动机解决问题题目:字符串转换整数 (atoi) https://leetcode-cn.com/problems/string-to-integer-atoi/自动机题解:https://leetcode-cn.com/problems/string-to-integer-atoi/solution/zi-fu-chuan-zhuan-huan-zheng-shu-atoi-by-leetcode-/原创 2021-03-09 15:57:45 · 377 阅读 · 0 评论 -
设计模式六大原则
设计模式六大原则1、开闭原则(Open Close Principle)开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。2、里氏代换原则(Liskov Substitution Principle)里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LS原创 2020-10-26 10:48:18 · 110 阅读 · 0 评论 -
设计模式学习笔记
前期准备选定参考书及参考链接:《大话设计模式》https://github.com/wklken/py-patternshttps://github.com/faif/python-patterns前置知识复习理解新知识是在已掌握知识的基础上进行的,如果在学习新知识的途中遇见了不清楚的小知识,一定要立马去弄懂这个小知识,再去学习新知识。1. 面向对象及UML(主要复习类图)普通类、抽象类、接口:接口和抽象类都是继承树的上层,都是普通类上层的抽象层。接口和抽象类相同点:原创 2020-10-23 15:00:11 · 173 阅读 · 1 评论 -
计算机科学中最重要的32个算法-(1)A* 搜索算法
计算机科学中最重要的32个算法A* 搜索算法A* 搜索算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。思想把算法思想讲的很清楚的一篇文章F = G + HG =从起点移动到中间某格的移动代价。H =从中间某方格移动到终点 的估算成本(估算方法不固定)。要点:每次选openL...原创 2019-12-18 15:58:09 · 333 阅读 · 0 评论 -
算法导论-动态规划法
钢条切割问题带备忘录的自顶向下法时间复杂度:思想:1, 将大问题分解(递归)p[n] = p[i] + p[n-i]2, 备忘p[n-i]如果已经计算过就直接返回r[n-i]# -*- coding:utf-8 -*-# Author:DaoYangdef memoized_rod(p, n): ''' :param p: 价格列表 ...原创 2019-07-15 17:54:56 · 208 阅读 · 0 评论 -
算法导论-分治策略
分治问题具有的特征:1.该问题的规模缩小到一定的程度就可以容易地解决;2.该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质3.利用该问题分解出的子问题的解可以合并为该问题的解;4.该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。 分治法解决步骤(分解-解决-合并):1.判断并解决最小问题2.分解问题3.递归解各自问题4...原创 2019-09-17 20:46:56 · 133 阅读 · 0 评论 -
算法导论--排序
插入排序时间复杂度:思想1, 分为前后两部分,前面是有序的,后面是无序的2, 当前元素在前面的部分由后向前对比并进行覆盖,直到找到最终位置def InsertSort(myList): # 获取列表长度 length = len(myList) for i in range(1, length): temp = myList[i]...原创 2019-07-04 17:48:26 · 205 阅读 · 0 评论