算法
BJFU_vth
这个作者很懒,什么都没留下…
展开
-
912:排序数组
问题描述给你一个整数数组 nums,请你将该数组升序排列。示例输入:nums = [5,2,3,1]输出:[1,2,3,5]输入:nums = [5,1,1,2,0,0]输出:[0,0,1,1,2,5]提示:1 <= nums.length <= 50000-50000 <= nums[i] <= 50000思路都给提示了,还合计啥呢。直接用计数...原创 2020-04-01 17:13:28 · 351 阅读 · 1 评论 -
你绝对能看懂的并查集
转的一个超级有意思,好懂的并查集解释, 膜拜大神~~找了好久都没找到原帖大多都是转的 , 后来在某评论下看到原帖链接啦 点这里哦故事读完,并查集就会了~~~~~江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架。但大侠们有一个优点就是讲义气,绝对不打自己的朋友。而且他们信奉“朋友的朋友就是我的朋友”,只要是能通...转载 2020-04-20 15:57:01 · 171 阅读 · 0 评论 -
【洗牌算法】- 打乱数组
应用场景抽奖、游戏公司洗牌、一切需要随机的地方。算法思想Fisher–Yates shuffle - 目前最好的乱序算法。第一步需要做的就是,从数组末尾开始,选取最后一个元素。在数组一共 9 个位置中,随机产生一个位置,该位置元素与最后一个元素进行交换。上一步中,我们已经把数组末尾元素进行随机置换。接下来,对数组倒数第二个元素动手。在除去已经排好的最后一个元素位置以外的8个位...原创 2020-02-26 22:51:56 · 291 阅读 · 0 评论 -
【PKU算法课0x03】分治算法
分治算法概念把一个任务,分成形式和原任务相同,但规模更小的几个部分任务(通常是两个部分),分别完成,或只需要选一部分完成。然后再处理完成后的这一个或几个部分的结果,实现整个任务的完成。听上去和整体来做没什么区别,其实不然。根据上面的定义,我们如果只选一部分就能完成任务,那么会大大降低时间复杂度。而且,就算是每个部分都要搞,那某些时候时间复杂度也会大大降低的,可以用数学论证。分治实例称硬币...原创 2020-02-03 13:36:09 · 279 阅读 · 0 评论 -
【PKU算法课0x02】二分算法
二分算法的意义可以将有序序列的查找的时间复杂度从O(n)降低到O(logn).二分查找的前提条件待查找序列是有序的,即单调的。二分查找的考查形式朴素的二分查找(元素有序且各不相同)二分查找变种(含有相同元素,比如要找比k小的最后一个值)二分查找应用思路如果给定的序列是有序的,或者说是稍加改动之后是有序的,或者说先排序后查找复杂度更低的,都可以用二分。总而言之,只要是有序序列的查找,...原创 2020-02-02 14:07:13 · 286 阅读 · 0 评论 -
【PKU算法课0x01】递归
什么是递归?所谓递归,就是一个函数调用其自身。注意,递归也属于函数调用,递归和普通的函数调用并没有什么区别。递归的重要性…怎么说呢?大概相当于好好吃饭好好睡觉对于健康的重要性吧。递归的特点要有递归出口有可以使当前状态向递归出口状态逼近的递推递归是自己调用自己,根据算法的有穷性,总要达到一个条件终止递归。所以递归的两大特点就是以上递归的调用细节函数调用是通过栈来实现的。栈是专门用...原创 2020-01-31 23:05:32 · 227 阅读 · 0 评论 -
【PKU算法课0x00】枚举
枚举何谓枚举?所谓枚举,就是逐个尝试答案的求解策略。听上去傻傻的,就是把所有的可能都试一遍而已,实则不然。为什么要枚举?现实中有很多问题是可以直接用公式求解的。比如已知华氏温度求摄氏温度等,这类问题的时间复杂度是O(1)的,因为这样直接套用公式就能解决,这也是程序设计的最高境界。然而有很多问题是没有一个确定的数学公式可以解出来的,那我们就只能采用某些策略一个一个的试,这就叫枚举。当然我...原创 2020-01-29 00:20:28 · 320 阅读 · 0 评论 -
hash数据结构练习
在考研中,线性表、链表等是考察核心,但是实际面试中一般都会问hash的。QAQ,我在面中型游戏公司和BAT级的公司的时候都问到了hash,所以还是挺重要的。直接上题。后续再补充知识点。山东理工OJ2123(母校OJ真给力)查找练习 hash——出现过的数字问题描述:有一个数据字典,里面存有n个数字(n<=100000),小明现在接到一个任务,这项任务看起来非常简单——给定m个数字,...原创 2019-07-07 19:58:50 · 290 阅读 · 0 评论 -
一些面试题
爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。def fib(n): if n == 1: return 1 if n == 2: return 2 return fib(n-1) + fib(n-2)r = fib(4)p...原创 2019-03-13 20:41:20 · 95 阅读 · 0 评论 -
最小堆
1.简介 最小堆是一棵完全二叉树,非叶子结点的值不大于左孩子和右孩子的值。本文以图解的方式,说明最小堆的构建、插入、删除的过程。搞懂最小堆的相应知识后,最大堆与此类似。2.最小堆示例3.最小堆的构建 初始数组为:9,3,7,6,5,1,10,2 ...原创 2019-03-13 19:21:35 · 937 阅读 · 0 评论 -
【第四范式】
2019校园招聘后端笔试题找对称子串问题描述:给定一个字符串(数字或大小写字母), 找出最长的对称的子串(如有多个,输出任意一个)。例如:输入:“abbaad”输出:“abba”示例输入:abbaad示例输出:abba解决思路:这题在去年途游游戏在线笔试的时候做过,总体来说就是从大到小,从左到右暴力找回文。解决方案:def solution(): st...原创 2019-03-04 21:13:22 · 726 阅读 · 0 评论 -
【快手】
2019测试A字符串压缩问题描述:对字符串进行RLE压缩,将相邻的相同字符,用计数值和字符值来代替。例如:aaabccccccddeee,则可用3a1b6c2d3e来代替。输入描述:输入为a-z,A-Z的字符串,且字符串不为空,如aaabccccccddeee输出描述:压缩后的字符串,如3a1b6c2d3e输入示例:aaabccccccdd输出示例:3a1b...原创 2019-03-04 19:20:13 · 354 阅读 · 0 评论 -
爱奇艺
2018秋招测试工程师红和绿问题描述:牛牛有一些排成一行的正方形。每个正方形已经被染成红色或者绿色。牛牛现在可以选择任意一个正方形然后用这两种颜色的任意一种进行染色,这个正方形的颜色将会被覆盖。牛牛的目标是在完成染色之后,每个红色R都比每个绿色G距离最左侧近。牛牛想知道他最少需要涂染几个正方形。如样例所示: s = RGRGR我们涂染之后变成RRRGG满足要求了,涂染的个数为2,没有...原创 2019-03-04 19:08:49 · 280 阅读 · 0 评论 -
【小米】
2015小米暑期实习笔试题1、懂二进制问题描述:世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么?示例输入:1999 2299示例输出:7思路:相异为1,相同为0,用异或然后统计结果中1的个数就能解决拉。解决方案:def solution(): data = input().split()...原创 2019-03-04 16:41:26 · 103 阅读 · 0 评论 -
数据结构之排序
本文部分参考自https://www.cnblogs.com/onepixel/articles/7674659.html侵删。代码是自个儿写的。原创 2018-12-13 14:11:23 · 131 阅读 · 0 评论 -
动态规划
先从斐波那契说起说到斐波那契,我们第一个递归程序一般都是从斐波那契开始的。=-=大概是这么写的:def fib1(n): if n== 1 or n == 2: return 1 return fib1(n-1) + fib1(n-2)这是自顶向下算的,不同的分支会包含大量相同的运算。所以会耗费大量的资源。所以思考之后可以自底向上的做,类似于数组那样。虽...原创 2018-11-16 10:25:25 · 289 阅读 · 0 评论 -
贪心算法
圣诞老人的礼物题目描述:圣诞节来临了,在城市A中圣诞老人准备分发糖果,现在有多箱不同的糖果,每箱糖果有自己的价值和重量,每箱糖果都可以拆分成任意散装组合带走。圣诞老人的驯鹿最多只能承受一定重量的糖果,请问圣诞老人最多能带走多大价值的糖果。输入:第一行由两个部分组成,分别为糖果箱数正整数n(1 &amp;amp;amp;amp;lt;= n &amp;amp;amp;amp;lt;= 100),驯鹿能承受的最大重量正整数w(0 &amp;amp;原创 2018-11-07 22:38:02 · 388 阅读 · 0 评论
分享