num

最坏情况为线性时间的选择算法

别说谁变了你拦得住时间么 提交于 2020-01-21 04:44:34
求给定输入中第k大的数的算法。 这是一个常见面试题,通常的解法也很明显,使用类似快排的思想。 每趟运行,把数组的值分成两部分,一部分比pivot大,一部分比pivot小,因为我们知道pivot在数组中的位置,所以比较k和pivot的位置就知道第k大的值在哪个范围,我们不断的进行recursion, 直到pivot就是第k大的值。 这个算法的时间预期是O(n)。这里需要注意的是讲的仅限于它的预期,对于这个算法,其在最差情况下,时间复杂度则为n的平法。 参阅 快速排序的无敌对手 一文,我们是可以构建出一个这样的序列的。最简单的情况,每趟快排的时候我们以第一个为主元,那么对于一个已经排序好的序列,我们要找最大的数,最后的时间花费就退化成了n的平方。 《算法导论》9.3章给出了一个最差情况也为线性O(n)的算法。 Step 1:把数组划分为若干个子数组,每个子数组里包含5个数,因为会有无法整除的可能,所以最后一个子数组会小于5. Step 2:用插入排序把这5个数排序,然后找出中位数,也就是第3个。 Step 3:把获得的中位数又排序 (这个地方错误,不是排序,应该递归调用SELECT) ,找出中位数的中位数x(如果有偶数个中位数,为了方便,约定x是较小的中位数)。 Step 4:把原来的数组使用类似快排的方法,分成两个部分。让k比划分的低区中的元素数目多1,因此x是第k小元素,并且有n

通过斐波那契 和list算法 看代码中的逻辑处理

柔情痞子 提交于 2020-01-21 02:56:36
Problem 最近也写了很多代码,但总感觉自己好像毫无长进,又学了很多。 How to go on it? I don’t know how to treat my the code had writen before and how to optimize it. Some of them is very terrible, especially the service works. It’s so lengthy and tedious, maybe I need to trim its format and make it more concise. 代码有自己的理解,怎么去理解代码?经常会想这个问题,而很简单的业务,却 代码实现是又臭又长,xxxxxx。 像理解数学一样理解代码。 写了这个大学写过的一段代码,感觉现在的理解和以前完全不一样。 ‘ 代码中注释很多,不描述 import java . util . ArrayList ; import java . util . LinkedHashSet ; import java . util . List ; /** * @Author liubh * @Email lbhbinhao@163.com */ public class Fibonacci { public static void main ( String

Python 打造专属照片墙

廉价感情. 提交于 2020-01-21 01:56:22
1、 先直接上代码 import random from PIL import Image import os # 照片墙 背景 照片素材 图形 #定义图形 fingure = [ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1,

jquery-购物车js

狂风中的少年 提交于 2020-01-20 23:24:55
购物车示例js,为了方便参考,页面写的比较简单。示例如下图所示: html代码如下: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <style> .product{ width: 450px; } .product-price{ float: right; } .total{ float: right; } input[type='text']{ width: 50px; } </style> <title>购物车结算</title> </head> <body> <div> <!--第一个店铺--> <div>店铺1</div> <div class="store"> <!--第一个商品--> <div class="product"><span>商品A</span> <input class="product-check" type=

最小表示法

梦想与她 提交于 2020-01-20 22:36:28
对于 最小表示法 ,本蒟蒻感觉永远不会考。。。 那就直接上优化版的最小表示法了 1 int F=0,S=1,Key; 2 while(F<Len &&S<Len) { 3 for(Key=0;Key<Len;Key++) { 4 if(Num[(F+Key)%Len]!=Num[(S+Key)%Len]) break; 5 ` if(Key>=Len) Jud=false,break; 6 if(Num[(F+Key)%Len>Num[(S+Key)%Len]) F+=(Key+1); 7 else F=S+1; 8 if(Num[(S+Key)%Len]>Num[(F+Key)%Len) //同理 9 } 10 printf("%d",&F<S ? F : S); 来源: https://www.cnblogs.com/DeNeRATe/p/12219587.html

P1064 金明的预算方案

醉酒当歌 提交于 2020-01-20 22:29:20
----------------------------- 链接: Miku ------------------------------ 此文不是正解,而且主要内容都在代码和注释上 ------------------------------ 这是暴力分组背包做法 ---------------------------- 对于每一个主件及其附件,我们的选择是有限的,而且这道题中说了最多两个附件,那么 我们完全可以枚举每一种组合,然后组合成一件新的物品,并且属于同一个集合,然后对处理后的新物品们 跑分组背包就行了 --------------------------- #include<iostream> #include<cstdio> using namespace std; long long n,m; long long x,y,z; long long num[7000];//存该类别物品出现数量 long long cnt;//统计类别数 struct th{ long long w; long long v; long long l; } t[7000],ft[7000];//一开始的和最后的物品 long long le[7000];//类别 long long f;//用来存物品的指针 long long po[7000][7000];/

JS实现购物车

房东的猫 提交于 2020-01-20 22:24:24
JS实现购物车 1.实现思路: (1)在body中定义一个id="list",将所有商品存放在一个列表中,当进入购物车时如果有两个商品被勾选了,需要计算出总共的价钱和商品的件数以及最贵的商品价格; (2)在JS中获取元素属性,分别把它们存放在数组中; (3)点击加号进行商品添加,点击减号进行商品移除; (4)将上一步用两个点击函数来实现添加和移除; (5)在JS中用for循环来计算总价钱和比较最贵的商品; 2.代码思路 1.商品列表: <body> <ul id="list"> <li> <input type="button" value="-" /> <strong>0</strong> <input type="button" value="+" /> 单价:<em>10元</em> 总计:<span>0元</span> </li> <li> <input type="button" value="-" /> <strong>0</strong> <input type="button" value="+" /> 单价:<em>5元</em> 总计:<span>0元</span> </li> <li> <input type="button" value="-" /> <strong>0</strong> <input type="button" value="+" />

PAT甲级真题 1003 Emergency (25分) C++实现(基于Dijkstra算法)

核能气质少年 提交于 2020-01-20 21:04:20
题目 As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads. Amount of rescue teams in each city and the length of each road between any pair of cities are marked on the map. When there is an emergency call to you from some other city, your job is to lead your men to the place as quickly as possible, and at the mean time, call up as many hands on the way as possible. Input Each input file contains one test case. For each test case, the first line contains 4 positive integers: N (<= 500) - the

store(商城项目)Springboot+springmvc+ajax+mybatis(15-1)

不想你离开。 提交于 2020-01-20 19:26:57
83. 减去订单中的商品的库存 首先,应该在“管理商品数据”的持久层,添加“修改商品库存”的功能,需要执行的SQL语句大致是: UPDATE t_product SET num=#{num}, modified_user=#{modifiedUser}, modified_time=#{modifiedTime} WHERE id=#{id} 除此以外,还应该先获取原来的库存值,需要“根据商品id查询商品详情”的功能,该功能已经开发,则无需重复开发! 所以,在 ProductMapper.java 接口中,需要添加: Integer updateNumById( @Param("id") Integer id, @Param("num") Integer num, @Param("modifiedUser") String modifiedUser, @Param("modifiedTime") Date modifiedTime); 然后配置映射: <!-- 修改商品的库存 --> <!-- Integer updateNumById( @Param("id") Integer id, @Param("num") Integer num, @Param("modifiedUser") String modifiedUser, @Param("modifiedTime") Date

TensorFlow 实现 RNN 入门教程

懵懂的女人 提交于 2020-01-20 18:31:57
转子: https://www.leiphone.com/news/201705/zW49Eo8YfYu9K03J.html 最近在看RNN模型,为简单起见,本篇就以简单的二进制序列作为训练数据,而不实现具体的论文仿真,主要目的是理解RNN的原理和如何在TensorFlow中构造一个简单基础的模型架构。其中代码参考了这篇博客。 数据集 首先我们看一下实验数据的构造: 输入数据X:在时间t,Xt的值有50%的概率为1,50%的概率为0; 输出数据Y:在实践t,Yt的值有50%的概率为1,50%的概率为0,除此之外,如果`Xt-3 == 1`,Yt为1的概率增加50%, 如果`Xt-8 == 1`,则Yt为1的概率减少25%, 如果上述两个条件同时满足,则Yt为1的概率为75%。 可知,Y与X有两个依赖关系,一个是t-3,一个是t-8。我们实验的目的就是检验RNN能否捕捉到Y与X之间的这两个依赖关系。实验使用交叉熵作为评价标准,则有下面三条理想的实验结果: 如果RNN没有学习到任何一条依赖,那么Yt为1的概率就是0.625(0.5+0.5*0.5-0.5*0.25),所以所获得的交叉熵应该是0.66(-(0.625 * np.log(0.625) + 0.375 * np.log(0.375)))。 如果RNN学习到第一条依赖关系,即Xt-3为1时Yt一定为1。那么