摘要:
题目描述:给定一个n*m的矩阵,矩阵的每一行都是递增的,每一列也是递增的,给定一个元素target,问该target是否在矩阵中出现。 思路:先从最左下角的元素开始找,三种情况: 1. 如果该元素大于target,说明target一定不会出现在最后一行中(因为最后一行也是递增的,其他的更大于targ 阅读全文
摘要:
这个题直接暴力求解的话时间复杂度肯定是不行的,所以,我们要计算每个数值的贡献,对每一个数求他当最小值当了多少次,当最大值当了多少次,最后当最大值的次数乘以这个数值减去当最小值的次数乘以数值就得到这个数的贡献,依次把这n个数的贡献加起来就是整个极差之和。 在计算一个数当了多少最值的时候,我们要理解问题 阅读全文
摘要:
最近写整数的二分查找,也就是二分index,期间会用到mid = (left + right) / 2;这个求他的中点,之前一直这么用,也和mid = left + (right - left) / 2交叉着用,没发现什么区别,而且我之前也手推过,发现这两个数学上是等价的,然而,今天做了一道二分的题 阅读全文
摘要:
numpy提供的数组功能比较常用,NumPy中维数被称为轴,轴数称为秩。 import numpy as np 比如a = np.array([[1, 5, 3], [4, 2, 6]]) a.min()返回的就是a中所有元素的最小值 a.min(0)返回的就是a的每列最小值 a.min(1)返回的 阅读全文
摘要:
最近又重新拾起了一直很凌乱的二分查找,各种版本,有时候总是很难调对,今天就整理了一下。 最基础的二分查找是从非递减序的数组中查找某个元素是否在数组中,如果在的话,随意返回一个位置,如果没有这个元素,返回-1。那么就有了下面这个基础的算法 然后下面关于二分查找的变种比较多了,下面主要列出来一些常用的变 阅读全文
摘要:
最近学了一段时间的Python,想写个爬虫,去网上找了找,然后参考了一下自己写了一个爬取给定页面的爬虫。 Python的第三方库特别强大,提供了两个比较强大的库,一个requests, 另外一个BeautifulSoup,这两个库目前只是会用,其他的还不太了解,网上给了一个BeautifulSoup 阅读全文
摘要:
题意:给你w个白色小鼠和b个黑色小鼠,把他们放到袋子里,princess先取,dragon后取,princess取的时候从剩下的当当中任意取一个,dragon取得时候也是从剩下的时候任取一个,但是取完之后会随机跳出来一个。取到每个小鼠的概率是一样的,跳出的也是一样的。先取到白色的小鼠赢,问最后pri 阅读全文
摘要:
题意:有30001个岛,在一条线上,从左到右编号一次为0到30000。某些岛屿上有些宝石。初始的时候有个人在岛屿0,他将跳到岛屿d,他跳跃的距离为d。如果当前他跳跃的距离为L,他下一次跳跃的距离只能为L-1,L,L+1之一且不能为0。他只能往编号更大的岛跳,直到他不能跳,问他最多能收集多少个宝石? 阅读全文
摘要:
题意:要收集n种卡片,每种卡片能收集到的概率位pi,求收集完这n种卡片的期望。其中sigma{pi} <=1; 思路:容斥原理。就是一加一减,那么如何算期望呢。如果用二进制表示,0表示未收集到,1表示收集到。 那么1/p1(p1表示的是事件1发生的概率)表示的是1发生的期望,这边包括001,011, 阅读全文
摘要:
题意:给定一个n,然后让你从1-n中选出某些数乘起来,使得乘积最大,并且乘积必须是完全平方数。 思路:将1-n种每个数都分解素因子,把他们的素因子的幂加起来,如果是偶数,就说明可以构成完全平方数,乘起来,如果是奇数,说明不能构成,减去一个就是偶数了,所以减去一个再乘起来。因为要分解1-n当中所有的素 阅读全文