算法学习
文章平均质量分 52
WitsMakeMen
这个作者很懒,什么都没留下…
展开
-
【论文理解】Neural circuit policies enabling auditable autonomy
ncp关于自动驾驶原创 2022-08-25 15:39:57 · 767 阅读 · 0 评论 -
【论文理解】DQN:Playing Atari with Deep Reinforcement Learning
简单理解DQN原创 2022-08-23 10:56:26 · 748 阅读 · 0 评论 -
【论文理解】AlphaGo:Mastering the game of Go with deep neural networks and tree search
AlphaGo实现原理简单总结原创 2022-08-21 13:40:13 · 300 阅读 · 0 评论 -
为什么esmm cvr塔是在点击样本空间中学习?
问题:为什么esmm学习cvr的时候不适用点击后的样本空间,而是用整个样本空间?这样学习出来的cvr不会有偏差吗?理解:esmm不是直接学习cvr转换率,因为cvr在整个曝光样本空间上学习效果是不好的,这个同过添加Lcvr效果不好也可以得到验证。esmm通过loss学习pctcvr来间接的学习pcvr,pctcvr是整个样本空间的可学习的,是直接由曝光到点击这一步,所以这一个可以学习通过整个样本空间学习得到。转自:https://zhuanlan.zhihu.com/p/29140617原创 2021-07-06 23:45:43 · 301 阅读 · 0 评论 -
tensorflow教程举例中layers.GlobalAveragePooling1D()的作用
作用:是对矩阵按列进行平均池化。比如tensorflow教程中的这个例子,中间的GlobalAveragePooling1D就是对输入中的sequence进行平均池化。因为这是个分类算法,输入是两维的<batch, sequence>,其中batch是训练模型的分批,sequence是单个句子的长度。模型代码:模型summary:模型简单介绍...原创 2020-03-01 18:29:58 · 4983 阅读 · 0 评论 -
为什么需要进行one-hot编码
部分内容来自:http://blog.csdn.net/google19890102/article/details/44039761,http://blog.csdn.net/dulingtingzi/article/details/51374487,学习整理,如有侵权,告知删除一、One-Hot Encoding介绍1 .One-Hot EncodingOne-Hot编码,又称为一位有效...转载 2020-01-05 13:59:38 · 1259 阅读 · 0 评论 -
LIS求解最长上升子序列问题
LIS即求给入序列中的最长升序子序列,是学习DP的入门经典。在此我给出两种算法,由浅至深。只求子序列长度。算法一:数据定义:a[] : 输入序列d[] : 保存最长升序子序列的子问题。 d[i] 表示以a[i]结尾的最长子序列的长度。 d[]初始化为1。因为子序列最短也是1。n : a 和 d的长度转载 2013-04-04 10:22:02 · 1180 阅读 · 0 评论 -
大规模问题求解
在寻找水王问题中,有一个计算机科学中很普遍的思想,就是如何把一个问题转换为规模较小的问题。分治,递推和贪心等都是基于这样的思路。在转化过程中,小的问题跟原问题本质上一致。这样,我们可以通过同样的方式将小问题转化为更小的问题。因此,转化的过程是很重要的。想上面的这个问题,我们保证了问题的解在小问题中仍然具有与原问题相同的性质:水王的ID在ID列表中的次数超过一半。转化本省计算的效率越高,转化后的问题原创 2013-04-22 11:07:17 · 1292 阅读 · 0 评论 -
模拟一个数字序列压栈出栈操作,输出所有出栈数字序列
#include #include #include using namespace std;static int count=0;/**mystack:代表堆栈input:代表要压入堆栈的数字序列output:代表弹出堆栈的数字序列*/void countSequeue(stack mystack,vector input,vector output){ /**原创 2013-04-03 20:11:59 · 3886 阅读 · 0 评论 -
使用递归遍历的方式生成所有的九宫格数独
程序很简单,就是从九宫格的(0,0)位置开始,从左到右从上到下对每个位置进行遍历,找到当前位置能用的所有数字,然后依次选取一个数字填充到当前位置,然后对下一个位置递归调用本函数进行遍历,最终会生成所有的数独。因为符合条件的数独比较多有6,670,903,752,021,072,936,960(约有6.67×10的21次方)个,而且采用递归效率比较低,程序运行时间是相当长的,通过运行程序得知,想穷举原创 2013-04-19 19:20:09 · 5178 阅读 · 0 评论 -
编程之美第一章游戏之乐学习总结
第一种游戏之乐中有18个游戏问题,从不同角度让我们学习使用计算机解决问题的能力,例如第一个问题“让cpu占用率曲线听你指挥”,让我们了解到怎样使cpu工作或者忙碌,怎样得到cpu的占用率等参数,以便我们选择是否让cpu工作或者睡眠来达到控制cpu曲线的目的。 第一章中介绍最多的还是怎样利用递归遍历的方式找到问题的解答,这也是计算机的最基本也是最重要的能力,递归遍历查找问题的解答,(1)最原创 2013-04-20 21:38:35 · 1322 阅读 · 0 评论 -
如何使用Arrays.sort()对自己定义的类进行排序
首先你要定义自己的类,该类必须继承自Comparable抽闲接口,因为调用sort排序的对象必须是可以比较的,通过重载Comparable接口的compareTo函数定义自己的比较规则,下面是我定义的一个表示图中边的类,他有i代表边的起始节点,j代表边的终止节点,w代表边的权重,然后定义compareTo函数,使边按照权重w进行升序排序:public class Edge implemen原创 2013-05-06 09:31:47 · 5476 阅读 · 0 评论 -
最小生成树的Prim算法和Kruskal算法java代码实现
MiniSpanTree中两个静态函数实现了最小生成树的Prim算法和Kruskal算法:package datastucture;import java.util.ArrayList;import java.util.Arrays;import java.util.HashSet;import java.util.Set;/** * 图的最小树生成算法 * @autho原创 2013-05-06 10:18:25 · 15373 阅读 · 3 评论 -
拓扑排序代码实现
package datastucture;import java.util.Stack;/** * 实现拓扑排序 * @author win7 * */public class TopologicalSort { /** * 开始初始化入度为零的节点 * @param graph * @param indegree * @param n */ public原创 2013-05-06 11:19:06 · 2031 阅读 · 0 评论 -
Dijkstra求解单源点最短路径
package dataStructures;public class Dijkstra { /** * Dijkstra求单源点最短路径 * 原理:首先引入一个辅助向量D,他的每个分量D[i]表示当前所找到的从v到每个中点的最短路径的长度。他的初态:若从v到 * vi有弧,则D[i]为弧上的权重;否则D[i]为正无穷。显然,长度为D[j]=Min{D[i]|i属于V}的路径是从原创 2013-05-06 17:08:21 · 1253 阅读 · 0 评论 -
Floyd算法求所有点对之间的最短路径
package datastucture;public class Floyd { /** * Floyd算法求所有点对之间的最短路径 * 原理:主要是通过遍历的方式任何一对顶点之间vi和vj的最短路径都都只能存在1到n-1的节点,所以可以通过遍历 * 这些节点的方式获得他们的最短路径 * 其中p是保存每一个最短路径vi到vj中紧跟vi之后的路径中第一个节点,所以可以通过遍历原创 2013-05-06 21:25:58 · 5504 阅读 · 0 评论 -
简单选择排序和堆选择排序代码实现
package datastucture;public class SelectionSort { /** * 简单选择排序 * 基本思想:每趟在n-i+1个记录中选取关键字最小的记录作为有序序列中第i个记录。 * 选择排序时不稳定的算法 * 时间复杂度为:O(n^2) * @param array */ public static void SelectSort(原创 2013-05-08 18:18:46 · 1270 阅读 · 0 评论 -
归并排序算法实现
package datastucture;public class MergeSort { /** * 合并两个有序的数组s1和s2 * @param s1 * @param s2 * @return */ public static int [] Merge(int [] s1,int [] s2){ int n=s1.length+s2.length; in原创 2013-05-08 19:04:43 · 792 阅读 · 0 评论 -
插入排序算法实现(直接插入排序和希尔排序)
package datastucture;public class Sort { /** * 直接插入排序:是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好序的 * 有序表中,从而得到一个新的,已排好序的列表。他是一种稳定的排序方式,时间复杂度 * 为O(n^2)。 * @param array * @param n * @return */ pub原创 2013-05-08 12:11:08 · 1501 阅读 · 0 评论 -
快速排序算法代码实现
package datastucture;/** * 快速排序:是对起泡排序的一种改进,它的基本思想是:通过一趟排序将待排序记录分割成独立的两部分, * 其汇总一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分继续进行排序,已达到 * 整个序列有序。快速排序是一种不稳定的排序算法,时间复杂度为O(n*lg(n))。 * @author win7 * */public原创 2013-05-08 15:27:31 · 8938 阅读 · 0 评论 -
使用败者树对k段归并段进行k-路平衡归并
package dataStructures;public class KMerge { /** * 调整败者树 * @param ls * @param b * @param s * @return */ public static int Adjust(int [] ls,int [] b,int s){ int n=b.length-1+s; for(原创 2013-05-09 14:47:39 · 3495 阅读 · 0 评论 -
求数组中和最大的子序列
package myAlgotithmTest;/** * 计算数组的和最大子序列 * @author win7 * */ public class MaxSubArraySum { /** * 在时间复杂度O(N^2)内找出数组中最大的子序列的累加和 * @param array * @return */ public static原创 2013-05-09 15:57:47 · 1157 阅读 · 0 评论 -
求两个整数的最大公约数
package myAlgotithmTest;/** * 求最大公约数 * @author chao * */public class CommonDivisor { /** * 求x和y的最大公约数 * 原理:x除以y的余数z,z与y的最大公约数和x与y的最大公约数是相同的 * @param x * @param y * @return */ publi原创 2013-05-09 16:01:31 · 965 阅读 · 0 评论 -
蓄水池抽样 均匀抽样
【转自】http://blog.csdn.net/linuxerhqt/article/details/6883785 如何等概率的从N个元素中选取出K个元素?这个问题就是一个蓄水池抽样(Reservoir Sampling),算法可以如下描述: Init : a reservoir with the size: k转载 2013-05-13 15:53:27 · 911 阅读 · 0 评论 -
字典树查询时间复杂度
有一个存放英文单词的文本文件,现在需要知道某些给定的单词是否在该文件中存在,若存在,它又出现了多少次? 这样的问题解法有多种,普通青年直接暴力查找,稍文艺点的用map。顺序查找的话,每给定一个单词就得遍历整个字符串数组,时间开销实在太大;如果将所有的单词都存放在一个map中,每次查找的时间复杂度则降为O(log(n))。不得不说,对于一般的应用场景,map足够满足所有需求。转载 2013-05-14 09:54:17 · 10437 阅读 · 0 评论 -
百度 - 搜索框的suggestion
题目内容百度搜索框的suggestion,比如输入北京,搜索框下面会以北京为前缀,展示“北京爱情故事”、“北京公交”、“北京医院”等等搜索词。如何设计使得空间和时间复杂度尽量低。 题目分析在字符串集合S中,找出相同前缀P的字符串。设size(S) = N,查询次数为M。 1.朴素方案朴素得,每次查询时,遍历整个字符串集合,转载 2013-05-14 10:08:10 · 1216 阅读 · 0 评论 -
java List 排序 Collections.sort
java List 排序 Collections.sort用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: 代码:Java代码/*** 根据order对User排序*/ public class User implemen转载 2013-07-25 13:43:00 · 1373 阅读 · 0 评论 -
添加最少括号使得给定括号字符串匹配
问题:给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来。如:[]是匹配的,所需括号个数为 0.([])[]是匹配的, 所需括号个数为 0.((]是不匹配的, 所需最少括号个数为 3.([)]是不匹配的,所需最少括号个数为 2.分析:此题来自:http://blog.csd转载 2013-09-17 17:30:44 · 2746 阅读 · 0 评论 -
排序算法稳定性分析
转自:http://blog.csdn.net/fisher_jiang/article/details/3137991这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个转载 2013-04-02 10:33:28 · 892 阅读 · 0 评论 -
快速排序理解(挖坑填坑比喻理解)
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。 总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快转载 2013-12-02 22:01:39 · 5414 阅读 · 0 评论 -
设计包含min函数的栈
题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。注:这是06年一道Google的面试题. 先来说个常规解和他的一个优化,常规解的时间复杂度符合要求,但需要线性的额外空间.常规解(参考 http://zhedahht.blog.163.com/blog/static/254111原创 2013-12-30 23:40:34 · 984 阅读 · 0 评论 -
找出最大子数组
求子数组的最大和题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。#include struct su原创 2014-01-01 23:49:19 · 3088 阅读 · 0 评论 -
笔试面试算法题
转自:http://www.cnblogs.com/xwdreamer/archive/2011/12/13/2296910.html1.把二元查找树转变成排序的双向链表 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \4 8 12 16 转转载 2014-02-20 19:31:48 · 3495 阅读 · 0 评论 -
求数组的连续子数组之和的最大值
一个有N个整数元素的一维数组{A[0],A[1],....,A[N-1],A[N]},这个数组有很多子数组,那么子数组之和的最大值是什么? 先给出一个时间复杂度为O(N^2)的求解程序实现,思想很简单,就是遍历数组中所有的子数组,代码如下:/** * 计算数组的最大子序列 * @author win7 * */public class MaxSubArraySum原创 2013-04-24 22:47:58 · 6327 阅读 · 0 评论 -
有101根电线 每根的一头在楼底 另一端在楼顶 有一个灯泡 一个电池 无数根很短的电线 怎么样在楼上一次在楼下去一次将电线的对应关系弄清楚。
(阿里云)问题描述:有101根电线 每根的一头在楼底 另一端在楼顶 有一个灯泡 一个电池 无数根很短的电线 怎么样在楼上一次在楼下去一次将电线的对应关系弄清楚。不知道标准的做法是怎样的,我只想到了以下一种办法:在楼顶的阶段:首先任意选出7根线(例如最左边的),可命名为A0~A6,那么还剩下94根线,编号为0~93,对于i线,可以写出i的二进制形式,例如11号的线可以写为0转载 2014-03-26 21:48:16 · 3468 阅读 · 0 评论 -
排序算法时间比较
下面是冒泡排序, 选择排序, 插入排序, 快速排序, 归并排序, duipai原创 2014-07-21 15:50:48 · 1284 阅读 · 1 评论 -
java单例模式四中方式
一、饿汉式单例类复制代码代码如下:public class Singleton { private Singleton(){ } private static Singleton instance = new Singleton(); private static Singleton getIns转载 2014-07-21 21:41:24 · 1305 阅读 · 0 评论 -
二叉树的非递归遍历
转载:http://www.cnblogs.com/dolphin0520/archive/2011/08/25/2153720.html 二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定转载 2014-07-26 20:33:22 · 955 阅读 · 0 评论 -
找出带环单向链表的环入口(交点)
其实这个问题已经被问烂了,但是之前没有想透,今天算是解决得差不多。找环的入口这个问题,其实是建立在另外一个问题之上的——判断单向链表是否有环土方法很多,但是比较好的目前就那么一个:一开始设置两个指针都指向表头,其中一个每次(一步)前进一个节点的叫p1,另外那个每次(一步)前进两个节点的叫p2 。p1和p2同时走,当其中有一个遇到null,就证明链表没有环。如何某个时刻(假设走了n步转载 2014-07-09 13:50:43 · 912 阅读 · 0 评论 -
满四清零的迭代器
z public void counts(int [] A){ int ones = 0, twos = 0, threes = 0, fours = 0; for(int i=0; i<A.length; i++){ fours = 0; fours |= threes & A[i]; threes |= twos & A[i]; twos |= ones & A原创 2014-07-11 15:18:11 · 1868 阅读 · 0 评论