
算法程序
文章平均质量分 81
一些算法的程序讲解
师范大学生
登峰造极境
展开
-
java 低耦合观察者模式
在之前的文章中,虽然被观察者并不依赖于观察者,但是被观察者知道观察者的存在,这就出现了一定程度的耦合关系。我们通常希望一个观察者模式是这样的:1.观察者依赖于被观察者,被观察者不依赖于观察者。2.被观察者最好不知道观察者的存在,既能独立工作,又能减少与观察者的耦合关系。原创 2022-09-14 17:52:19 · 566 阅读 · 0 评论 -
观察者模式
观察者模式常用于一对多的监听情景,并且被监听者可以实现监听者的回调,也就是说被监听者能够触发监听者的动作,该动作就是回调。观察者模式的特点:1.被观察者不知道具体的观察者是谁,只知道自己被观察了,并且在合适的时机进行广播,让感兴趣的观察者知道发生了什么事情。2.观察者依赖于被观察者,被观察者不依赖于观察者,是单向关系,耦合程度不高。没有被观察者,观察者无法工作;没有观察者,被观察者该干啥干啥,因为被观察者本来就不清楚谁观察他,发广播是被观察的个人行为。......原创 2022-08-10 21:38:43 · 1914 阅读 · 0 评论 -
剑指数组c++
1. 两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。 经典的哈希表问题。我们用哈希表记录每个值的下标,当合适的数值出现时我们就能直接获得该数值的下标。class Solution {public: vector<int> twoSum(vector<原创 2021-09-04 23:15:33 · 376 阅读 · 0 评论 -
剑指中的字符串
剑指 Offer 05. 替换空格 极致的快乐,可以用新建一个字符串的方式实现。class Solution {public: string replaceSpace(string s){ if(s.size()==0){ return s; } string ans; for(int i=0;i<s.size();i++){ if(s[i] == ' '){原创 2021-09-02 23:07:43 · 188 阅读 · 0 评论 -
在二叉树中寻找快乐c++
经典二叉树问题,快乐是要保证的。二叉树的最大深度 典中典之二叉树最大深度,非常经典的深度搜索和递归。 对左右子树深度搜索,如果碰到空节点就返回,每次返回计数都+1,最后在左子树和右子树中取最大值。class Solution {public: int maxDepth(TreeNode* root) { if(root==nullptr) return 0; return max(maxDepth(root->left),maxDepth(ro原创 2021-08-31 23:08:41 · 194 阅读 · 0 评论 -
剑指中的链表总结c++
剑指链表总结。剑指 Offer 06. 从尾到头打印链表 可以用朴素的数组记录,最后倒序一下就好了。class Solution {public: vector<int> reversePrint(ListNode* head) { vector<int> ans; if(head == nullptr){ return ans; } while(head!=nullptr)原创 2021-08-31 19:31:51 · 157 阅读 · 0 评论 -
lc743 网络延迟时间学习
弗洛伊德算法: 弗洛伊德算法能记录出图中任何一点到其他任何一点的最短距离。class Solution {public: int networkDelayTime(vector<vector<int>>& times, int n, int k) {//k是起点 //定义图 vector<vector<long long>> graph(n+1,vector<long long>(n+1,原创 2021-08-25 16:10:53 · 353 阅读 · 0 评论 -
哈希集与哈希映射笔记(C++)
哈希集和哈希映射都是常用的数据结构。这里记录一下各自的特点与操作方法。 首先定义两个概念: 假设我们做一个名单,里面记录了人物名称与某项事务的对应关系。比如记录了每个人拥有的LOL段位:“盖伦——黄金”,“赵信——白银”。基于刚才的例子,我们定义: 键(key),就是该对应关系的索引。一般我们想要去查找的都是某个人的段位,那么这个人的名称就是用来查找的索引。“盖伦”、“赵信”就属于键。 键值(value),就是键所对应的值,在例子中“黄金”、“白银”就是键值。 需要注意的是,在哈希结原创 2021-03-20 17:18:08 · 1099 阅读 · 4 评论 -
leetcode 贪心算法笔记
题目: 此题的贪心算法解法如下。def maxSubArray(nums): cur_sum=nums[0] max_sum=nums[0] for i in range(1,len(nums)): cur_sum=max(nums[i],cur_sum+nums[i]) max_sum=max(cur_sum,max_sum) return max_sum 从题目的示例中可以看到,需要在列表[-2,1,-3,4,-1,2原创 2021-03-08 22:12:03 · 163 阅读 · 0 评论 -
leetcode 二叉树学习笔记(python3)
把二叉树的学习历程记录一下。遍历二叉树 如上图所示,二叉树是由父节点与子节点组成的,每个父节点最多有一左一右两个子节点,子节点不能脱离父节点单独存在。 前序遍历:前序遍历先访问根节点,再遍历左子树,最后遍历右子树。简记为根->左->右。上图中的二叉树根据前序遍历得到的结果为:F、B、A、D、C、E、G、I、H 从遍历的过程中可以直观地看到,前序遍历和其名称一样,在左右两侧分别严格进行从上至下的遍历。 中序遍历:中序遍历先遍历左子树,再访问根节点,最后遍原创 2021-03-01 15:22:35 · 315 阅读 · 2 评论 -
leetcode 初级链表学习笔记(python3)
class Solution: def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode: if head.next == None: return None point1 = head point2 = head length = 1 # 因为遍历链表是从第一个节点往后开始的,所以需要先算上头结点 while poin原创 2021-02-22 22:50:00 · 176 阅读 · 1 评论 -
基于粒子群算法(PCO)的函数寻优代码详解
import randomimport numpy as npimport matplotlib.pyplot as plt class PSO: def __init__(self, parameters): """ particle swarm optimization parameter: a list type, like [NGEN, pop_size, var_num_min, var_num_max] """原创 2021-01-13 10:52:04 · 1327 阅读 · 0 评论 -
基于蚁群算法(ACO)的函数寻优代码详解
import numpy as npimport matplotlib.pyplot as plt#每一个个体就是一个蚂蚁#一个种群就是一个蚁群 class ACO: def __init__(self, parameters): """ Ant Colony Optimization parameter: a list type, like [NGEN, pop_size, var_num_min, var_num_max]原创 2021-01-05 10:27:44 · 4630 阅读 · 10 评论 -
基于DEAP库的NSGA2代码详解
import numpy as npfrom deap import base, tools, creator, algorithmsimport randomimport matplotlib.pyplot as plt#定义问题creator.create('MultiObjMin',base.Fitness,weights=(-1.0,-1.0))#两个目标,都求最小值creator.create('Individual',list,fitness = creator.MultiObjMi原创 2020-12-12 22:22:59 · 3909 阅读 · 6 评论 -
基于遗传算法(deap)的非线性函数寻优与编码方式浅谈
import numpy as npfrom deap import base, tools, creator, algorithmsimport random#定义问题creator.create('FitnessMin',base.Fitness,weights=(-1.0,))#单变量,求最小值creator.create('Individual',list,fitness = creator.FitnessMin)#创建individual类GENE = 48#基因长度toolbo原创 2020-12-05 19:56:06 · 1516 阅读 · 0 评论 -
基于遗传算法(deap)的配词问题与deap框架
原创 2020-12-02 11:24:29 · 1171 阅读 · 0 评论 -
基于遗传算法(deap库)的一元函数寻优代码详解
import numpy as npfrom deap import base, tools, creator, algorithmsimport randomfrom scipy.stats import bernoulliGENE_SIZE = 26#定义问题creator.create('FitnessMin',base.Fitness,weights=(1.0,))#单变量,求最大值creator.create('Individual',list,fitness = creator.F原创 2020-12-01 15:18:16 · 2402 阅读 · 0 评论