每日编程
文章平均质量分 64
weixin_45750404
这个作者很懒,什么都没留下…
展开
-
牛客真题编程——day20
编译环境:c++1、顺时针打印数字矩阵描述:给定一个数字矩阵,请设计一个算法从左上角开始顺时针打印矩阵元素输入描述:输入第一行是两个数字,分别代表行数M和列数N;接下来是M行,每行N个数字,表示这个矩阵的所有元素;当读到M=-1,N=-1时,输入终止。算法思想:根据题目要求,要将数字矩阵进行顺时针输出。首先将二维数组存储下来,顺序遍历二维数组,依次从左到右,从右上到右下,从右下到左下,从左下到左上四个小循环。需要计算这样循环的次数,很明显取决于m,n中小的那个,找到对应关系为大循原创 2022-02-12 17:28:10 · 808 阅读 · 0 评论 -
python数据爬取入门——day19
58同城二手房批量图片爬取网址:天津二手房网,天津房产网,天津二手房买卖出售交易信息-天津58同城需求分析:通过此需求来练习简单的反反爬策略,模拟浏览器批量发送请求,处理获得的图片数据。基本的编码流程:1、指定url1)首先根据要求,获取需要爬取数据的url然后进行UA伪装,获取一个浏览器标识(User-Agent),以谷歌为例:右键选择检查(快捷:fn+F12),选择network,随意选择一个请求都可以查看到2)请求参数的处理参数为url,data(请求需要.原创 2022-02-11 22:59:11 · 476 阅读 · 0 评论 -
牛客真题编程——day18
编译环境:c++1、表达式合法判断描述:写一段代码,判断一个包括'{','[','(',')',']','}'的表达式是否合法(注意看样例的合法规则。)可以看到一个合法的表达式,左括号和右括号必须相互对应。给定一个表达式A,请返回一个bool值,代表它是否合法。算法思想:题目没有给出明确的描述,不考虑左右括号的顺序问题也能通过测试,所以只需要判断大中小左右括号的个数是否匹配即可,左括号自加1,右括号自减掉,如果最后计数为0,则合法。代码部分实现:2、删除重复字符描原创 2022-02-10 21:11:07 · 256 阅读 · 0 评论 -
牛客真题编程——day17
编译环境:c++1、投篮游戏描述:有一个投篮游戏。球场有p个篮筐,编号为0,1...,p-1。每个篮筐下有个袋子,每个袋子最多装一个篮球。有n个篮球,每个球编号xi 。规则是将数字为xi 的篮球投到xi 除p的余数为编号的袋里。若袋里已有篮球则球弹出游戏结束输出i,否则重复至所有球都投完。输出-1。问游戏最终的输出是什么?算法思想:题目思路其实很简单,只需要将整个过程模拟出来即可,还有题目好像没有说明球的编号i是从1开始的,输出结果时需要注意。我的bug是在输入n球个的时候,输入和处理放原创 2022-02-09 23:16:53 · 236 阅读 · 0 评论 -
牛客真题编程——day16
编译环境:c++1、山寨金闪闪描述:金闪闪死后,红A拿到了王之财宝,里面有n个武器,长度各不相同。红A发现,拿其中三件武器首尾相接,组成一个三角形,进行召唤仪式,就可以召唤出一个山寨金闪闪。(例如,三件武器长度为10、15、20,可以召唤成功。若长度为10、11、30,首尾相接无法组成三角形,召唤失败。)红A于是开了一个金闪闪专卖店。他把王之财宝排成一排,每个客人会随机抽取到一个区间[l,r],客人可以选取区间里的三件武器进行召唤(客人都很聪慧,如果能找出来合适的武器,一定不会放过)。召唤结束后原创 2022-02-08 22:08:21 · 383 阅读 · 0 评论 -
牛客真题编程——day15
编译环境:c++1、ZJ3 编程题2描述有一个仅包含’a’和’b’两种字符的字符串s,长度为n,每次操作可以把一个字符做一次转换(把一个’a’设置为’b’,或者把一个’b’置成’a’);但是操作的次数有上限m,问在有限的操作数范围内,能够得到最大连续的相同字符的子串的长度是多少。算法思想:运用滑动窗口的思想,首先对字符串进行遍历,先取得一个子序列中最多含有(m个a/m个b),也就是让子序列中a或者b的操作次数刚好临界m时。然后滑动窗口,只有当再次满足a个数和b的个数都大于m,且其中一个字原创 2022-02-07 21:09:10 · 1989 阅读 · 0 评论 -
牛客真题编程——day14
编程环境:c++1、字符串价值描述:有一种有趣的字符串价值计算方式:统计字符串中每种字符出现的次数,然后求所有字符次数的平方和作为字符串的价值例如: 字符串"abacaba",里面包括4个'a',2个'b',1个'c',于是这个字符串的价值为4 * 4 + 2 * 2 + 1 * 1 = 21牛牛有一个字符串s,并且允许你从s中移除最多k个字符,你的目标是让得到的字符串的价值最小。算法思想:根据题目要求,要想使得移除固定字符个数后,字符串的价值最小,那么每次移除的都应该是当前的字符串中出原创 2022-02-06 20:05:49 · 371 阅读 · 0 评论 -
牛客真题编程——day13
编程环境:c++1、搭积木描述小明有一袋子长方形的积木,如果一个积木A的长和宽都不大于另外一个积木B的长和宽,则积木A可以搭在积木B的上面。好奇的小明特别想知道这一袋子积木最多可以搭多少层,你能帮他想想办法吗?定义每一个长方形的长 L 和宽 W ,袋子里面长方形的个数为 n 。假如袋子里共有5个积木分别为 (2, 2), (2, 4), (3, 3), (2, 5), (4, 5), 则不难判断这些积木最多可以搭成4层, 因为(2, 2) < (2, 4) < (2, 5)原创 2022-02-05 23:33:34 · 351 阅读 · 0 评论 -
牛客真题编程——day12
编译环境:c++1、路灯描述:一条长l的笔直的街道上有n个路灯,若这条街的起点为0,终点为l,第i个路灯坐标为ai ,每盏灯可以覆盖到的最远距离为d,为了照明需求,所有灯的灯光必须覆盖整条街,但是为了省电,要使这个d最小,请找到这个最小的d。算法思想:题目要求找到最小的路灯照亮范围,其实就是对输入的乱序路灯位置进行排序,找到相邻路灯间的最大间距即可,还需考虑边界,取最大值输出。注意题目有多组输入且输出保留两位小数。代码部分实现:2、小易的升级之路描述小易经常沉迷于网络原创 2022-02-04 20:29:15 · 219 阅读 · 0 评论 -
牛客真题编程——day11
编译环境:c++1、裁剪网格纸描述度度熊有一张网格纸,但是纸上有一些点过的点,每个点都在网格点上,若把网格看成一个坐标轴平行于网格线的坐标系的话,每个点可以用一对整数x,y来表示。度度熊必须沿着网格线画一个正方形,使所有点在正方形的内部或者边界。然后把这个正方形剪下来。问剪掉正方形的最小面积是多少。算法思想:题目想要满足包含所有的点的情况下,最小面积的裁剪,其实就是求x方向和y方向上最大的长度,然后取大值作为正方形的边长即可得到最小的正方形。代码部分实现:2、编码描述:原创 2022-01-30 01:23:35 · 173 阅读 · 0 评论 -
牛客真题编程——day10
编译环境:c++1、生成格雷码描述在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。给定一个整数n,请返回n位的格雷码,顺序为从0开始。算法思想:根据格雷码的特性,不难发现,N位格雷码就是在N-1位生成的格雷码的前面加上1位的0或者1,并且个数为2的N个:前2的N-1个和后2的N-1个的第N-1位对称,都是N-1位生成的格雷码,即将N-1位生成的格雷码+0/1正逆序输出即可。据此设原创 2022-01-29 00:40:42 · 226 阅读 · 0 评论 -
牛客真题编程——day9
编译环境:c++1、微信红包描述春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。给定一个红包的金额数组 gifts 及它的大小 n ,请返回所求红包的金额。若没有金额超过总数的一半,返回0。算法思想: 题目要求算法尽可能高效,这里定义了一个结果的结构体,红包金额满足 1≤gifti≤100000 之间,所以声明一个结构体数组,记录下N个红包的金...原创 2022-01-27 20:30:30 · 311 阅读 · 0 评论 -
牛客真题编程——day8
编译环境:c++1、最大间隔描述给定一个递增序列,a1 <a2 <...<an 。定义这个序列的最大间隔为d=max{ai+1 - ai }(1≤i<n),现在要从a2 ,a3 ..an-1 中删除一个元素。问剩余序列的最大间隔最小是多少?输入描述:第一行,一个正整数n(1<=n<=100),序列长度;接下来n个小于1000的正整数,表示一个递增序列。算法思想:这道题的思路很简单,题目已经规定好了递增序列,所以只需要存储下前N-1项的最大的后一原创 2022-01-26 19:49:23 · 132 阅读 · 0 评论 -
牛客真题编程——day7
编译环境:c++1、小招喵跑步描述:小招喵喜欢在数轴上跑来跑去,假设它现在站在点n处,它只会3种走法,分别是:1.数轴上向前走一步,即n=n+12.数轴上向后走一步,即n=n-13.数轴上使劲跳跃到当前点的两倍,即n=2*n现在小招喵在原点,即n=0,它想去点x处,快帮小招喵算算最快的走法需要多少步?算法思想:最优路线可以转化为从终点到起点的最快走法。一开始直接让奇数位置-1,偶数位置/2了,但实际上还需要考虑比如当n回到7和3时,采用策略1和策略2会有不同的步数,这里需要三..原创 2022-01-25 20:20:55 · 342 阅读 · 0 评论 -
牛客真题编程——day6
编译环境:c++1、附加题描述:存在n+1个房间,每个房间依次为房间1 2 3...i,每个房间都存在一个传送门,i房间的传送门可以把人传送到房间pi(1<=pi<=i),现在路人甲从房间1开始出发(当前房间1即第一次访问),每次移动他有两种移动策略:A. 如果访问过当前房间 i 偶数次,那么下一次移动到房间i+1;B. 如果访问过当前房间 i 奇数次,那么移动到房间pi;现在路人甲想知道移动到房间n+1一共需要多少次移动;算法思想:题目有两个规则:访问奇数...原创 2022-01-24 21:23:37 · 758 阅读 · 0 评论 -
牛客真题编程——day5
编译环境:c++1、马戏团描述:搜狐员工小王最近利用假期在外地旅游,在某个小镇碰到一个马戏团表演,精彩的表演结束后发现团长正和大伙在帐篷前激烈讨论,小王打听了下了解到, 马戏团正打算出一个新节目“最高罗汉塔”,即马戏团员叠罗汉表演。考虑到安全因素,要求叠罗汉过程中,站在某个人肩上的人应该既比自己矮又比自己瘦,或相等。 团长想要本次节目中的罗汉塔叠的最高,由于人数众多,正在头疼如何安排人员的问题。小王觉得这个问题很简单,于是统计了参与最高罗汉塔表演的所有团员的身高体重,并且很快找到叠最高罗汉塔的人原创 2022-01-23 21:14:40 · 2740 阅读 · 0 评论 -
牛客真题编程——day4
编译环境:c++1、交叉线描述:大M布置给小M一个题目:首先给出n个在横坐标上的点,然后连续的用半圆连接他们:首先连接第一个点与第二点(以第一个点和第二点作为半圆的直径)。然后连接第二个第三个点,直到第n个点。现在需要判定这些半圆是否相交了,在端点处相交不算半圆相交。如下图所示。输入描述:输入的第一行包含一个整数T (1 ≤ T ≤ 10)表示有T组样例。每组样例的第一行是一个整数n (1≤n≤1000)。接下来的一行输入有n个用空格隔开的不同的整数a1,a2,...,an (-原创 2022-01-22 20:51:24 · 521 阅读 · 0 评论 -
牛客真题编程——day3
编程环境:java1、序列找数描述从非负整数序列 0, 1, 2, ..., n中给出包含其中n个数的子序列,请找出未出现在该子序列中的那个数。算法思想:根据题目要求,先根据n构造一个0...n的数组,然后依次输入子序列的值,在父数组中标记出来。循环遍历父数组,没有被标记的即为未出现在子序列的数,打印输出即可。代码部分实现:代码优化:这种方法运用了三个循环函数,虽然思路简易,但是占用了大量的内存。经过学习,其实可以巧妙转化为对子序列和父序列分别利用等差序列求累加和,差值即原创 2022-01-21 21:16:32 · 328 阅读 · 0 评论 -
牛客真题编程——day2
编程环境:java1、回合制游戏描述你在玩一个回合制角色扮演的游戏。现在你在准备一个策略,以便在最短的回合内击败敌方角色。在战斗开始时,敌人拥有HP格血量。当血量小于等于0时,敌人死去。一个缺乏经验的玩家可能简单地尝试每个回合都攻击。但是你知道辅助技能的重要性。在你的每个回合开始时你可以选择以下两个动作之一:聚力或者攻击。 聚力会提高你下个回合攻击的伤害。 攻击会对敌人造成一定量的伤害。如果你上个回合使用了聚力,那这次攻击会对敌人造成buffedAttack点伤害。否则,会造成...原创 2022-01-20 20:57:14 · 1815 阅读 · 0 评论 -
牛客真题编程——day1
环境:c++1、连续最大和一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3首先使用穷举法,嵌套循环遍历出最大和,但是时间复杂度为n2,会有一个测试用例运行超时。采用动态规划思想:分解问题为:sum(最大和)+a[i]<a[i] 则sum<0:sum=a[i];否则 sum+=a[i]2、搬圆桌现在有一张半径为r的圆桌,其中心位于(x,y),现在他想把圆桌的中心移到(x1,y1)。每次移动原创 2022-01-19 20:51:25 · 597 阅读 · 0 评论