牛客

爬虫实现爬取牛客网数据结构试题

不问归期 提交于 2020-03-04 22:15:23
1 目标 爬取牛客网上关于《数据结构》的试题。 试题链接 进入网页可以看到,如果选择《数据结构》的某个知识点组卷,一次最多只能出30题。 因此,想法就是用程序一次将30题全部爬下。随后生成新的试卷再进行爬虫。 2 实现思路 2.1 最初思路 访问第一题的url 爬取试题 找到下一题的url后,重复1.2操作,直到爬完30题 很遗憾,打开devtools看试题页的元素,发现必须先登录才能有试题页面, 因此问题来到了登录上。 用devtools看登录过程,没有相应的帐号、密码信息,因此无法用帐号密码post方式登录。但是注意到登录页有cookie,如下图右侧,故可采用cookie方式登录。 另外发现该页面有全部试题的url,因此新的方案为 2.2 新思路 通过cookie访问第一题url,获得全部试题的url 依次访问每题的url,爬取 3 代码 # -*- coding: utf-8 -* """ 目标,爬取全部的题目以及答案 1. 利用cookie访问网页,记录全部的题目id并记录在内存中 需要把标签的属性记下来 2. 依次访问这些题目的网页,爬取问题选项和答案 3. 存储到本地文件 """ import requests from lxml import etree import re def pageid ( url , cookie ) : headers = { 'User

孩子们的游戏(圆圈中最后剩下的数)

独自空忆成欢 提交于 2020-02-27 00:23:23
题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!^_^)。请你试着想下,哪个小朋友会得到这份礼品呢?(注:小朋友的编号是从0到n-1) 如果没有小朋友,请返回-1 思路 数组模拟。 时间复杂度O(mn),空间复杂度O(1)。 代码 public class Solution { public int LastRemaining_Solution(int n, int m) { if(n < 1 || m < 1) return -1; int[] arr = new int[n]; int index = -1; int count = 0; int num = n; while(num > 0) { index++; if(index >= n) { index = 0; } if(arr[index] == 1) { continue; }

与自我的和解

此生再无相见时 提交于 2020-02-17 00:55:15
写给自己: 这两天一直在反思自己过去学习技术的行为,因为发现随着自我学习的增多,随着技术知识面的提升,自己竟然对技术、对计算机丧失了激情,再也体会不到当初本地编写一个hello world跑起来就能欢呼雀跃的感觉,也没有了用命令行实现启动QQ时的那种兴奋,有的只是不断往脑袋里塞知识的麻木,不断使用CTRL C、CTRL V的无脑,这样行吗? 这两天因为约了华为的面试,要在牛客网做机试,于是准备了两天,在今天下午完成了测试。做牛客网测试的过程中,起初对它的这种模式很反感,各种Scanner、while获取参数,而且题目也没不像Leetcode那样寻求智力上的突破,但随着了解的加深,发现牛客网的这种题目才更符合实际的场景。而像华为这样的公司,对牛客网情有独钟的原因,我觉得有一部分就是这种实用性,它不要求应试者有多么高的智商、多么炫酷的算法技能,而是要求你在面对实际问题时能较好的分析问题、解决问题,要求你是一个脚踏实地的工程师。完成机试的瞬间,我仿佛触摸到了一丝之前一直在思考的事情,感受到了那透过裂缝射进来的一缕光。 想起去年万维钢解读过得一本书,布鲁克斯的《The Second Mountain》(第二座山)。每个人都处于爬第一座山或者第二座山的过程中,第一座山是自我,第二座山是无我。爬第一座山的时候,人会不断地自我逼迫,去竞争,去上升,去改变;而爬第二座山的时候

寒假日志 6

六眼飞鱼酱① 提交于 2020-02-16 03:29:47
这几天比赛有点多,牛客训练赛,codeforce,补题都补不过来了快。。。不过,补题收获的确实比较多,但是也比较耗费时间。。。 这几天和往常一样睡懒觉,昨晚的codeforce B和C都Wa了两发,脑子转的有点慢。。。D题最后也没思路,最后倒也是加了点分,现在还未出来题解。今天的牛客和往常一样,感觉自己出的差不多了就去玩了。。。这几场是越来越难了,今天还有cf,后天还有cf,后天还有牛客。题真补不过来了,先记到小本本上,嘿嘿,以后再补(谁知道以后是多久) 上回AtcoderE题数位DP还没补上,牛3的数位DP也还没补上。。。。学不明白呜呜呜。 老师布置的专题还没开始刷,只能干着急。干着急也没用,立马去学! 寒假就这样在我慵懒的手指下,舒服的被窝里 悄悄溜走了,来日方长都是骗人的,滚去补题了。 来源: CSDN 作者: 冷血怪兽 链接: https://blog.csdn.net/qq_43408238/article/details/104303215

【202002】牛客网“成绩排序”(吐槽向)

你离开我真会死。 提交于 2020-02-15 08:55:32
我的代码如下(CE): # include <stdio.h> # include <string.h> typedef struct Student { char name [ 100 ] ; int age ; int grade ; } stu ; void change ( stu stu [ ] , int i , int j ) { char temp_n [ 100 ] ; int temp_a , temp_g ; strcpy ( temp_n , stu [ j ] . name ) ; //j to temp temp_a = stu [ j ] . age ; temp_g = stu [ j ] . grade ; strcpy ( stu [ j ] . name , stu [ i ] . name ) ; //i to j stu [ j ] . age = stu [ i ] . age ; stu [ j ] . grade = stu [ i ] . grade ; strcpy ( stu [ i ] . name , temp_n ) ; //temp to i stu [ i ] . age = temp_a ; stu [ i ] . grade = temp_g ; } int judge ( char str1 [ ] , char

2020牛客寒假算法基础集训营3 B-牛牛的DRB迷宫II (构造)

孤人 提交于 2020-02-10 23:40:16
2020牛客寒假算法基础集训营3 B-牛牛的DRB迷宫II (构造) 链接: https://ac.nowcoder.com/acm/contest/3004/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K Special Judge, 64bit IO Format: %lld 题目描述 牛牛有一个n*m的迷宫,对于迷宫中的每个格子都为'R','D','B'三种类型之一,'R'表示处于当前的格子时只能往右边走'D'表示处于当前的格子时只能往下边走,而'B'表示向右向下均可以走。 我们认为迷宫最左上角的坐标为(1,1),迷宫右下角的坐标为(n,m),除了每个格子有向右移动以及向下移动的限制之外,你也不能够走出迷宫的边界。 牛牛现在请你设计迷宫,但是要求你设计的迷宫符合他的要求,他要求你设计的迷宫从(1,1)节点移动到(n,m)节点不同的移动序列种类数目≡k(mod   109+7)\equiv k (mod ,,, 10^9+7)≡k(mod109+7)。 请你构造出符合条件的DRB迷宫,但是要求你输出的迷宫的大小不超过50*50,具体输出格式见输出描述及样例。 如果存在多解你可以构造任意符合条件的迷宫,反之如果无解,请输出一行一个字符串"No solution"。 输入描述: 仅一个整数k

2020牛客寒假算法基础集训营1 H题 nozomi和字符串

Deadly 提交于 2020-02-06 00:14:10
链接: https://ac.nowcoder.com/acm/contest/3002/H 来源:牛客网 nozomi看到eli在字符串的“花园”里迷路了,决定也去研究字符串问题。 她想到了这样一个问题: 对于一个 “01”\mathit{“01”} “ 0 1 ”串而言,每次操作可以把 0\mathit0 0 字符改为 1\mathit1 1 字符,或者把 1\mathit1 1 字符改为 0\mathit0 0 字符。所谓 “01”\mathit{“01”} “ 0 1 ”串,即只含字符 0\mathit0 0 和字符 1\mathit1 1 的字符串。 nozomi有最多 次操作的机会。她想在操作之后找出一个尽可能长的连续子串,这个子串上的所有字符都相同。 nozomi想问问聪明的你,这个子串的长度最大值是多少? 注: 次操作机会可以不全部用完。 如果想知道连续子串的说明,可以去问问eli,nozomi不想再讲一遍。 输入描述: 第一行输入两个正整数 和 输入仅有一行,为一个长度为 的、仅由字符 0\mathit00 和 1\mathit11 组成的字符串。 输出描述: 一个正整数,为满足条件的子串长度最大值。链接:https://ac.nowcoder.com/acm/contest/3002/H来源:牛客网 输入 5 1 10101 输出 3 说明 只有 双指针查找最大

牛客练习赛13

别说谁变了你拦得住时间么 提交于 2020-01-22 18:36:01
链接: https://www.nowcoder.com/acm/contest/70/A 来源:牛客网 幸运数字Ⅰ 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 定义一个数字为幸运数字当且仅当它的所有数位都是4或者7。 比如说,47、744、4都是幸运数字而5、17、467都不是。 现在,给定一个字符串s,请求出一个字符串,使得: 1、它所代表的整数是一个幸运数字; 2、它非空; 3、它作为s的子串(不是子序列)出现了最多的次数(不能为0次)。 请求出这个串(如果有多解,请输出字典序最小的那一个)。 输入描述: 串s(1 <= |s| <= 50)。s只包含数字字符,可以有前导零。 输出描述: 一个串表示答案。无解输出-1。 示例1 输入 047 输出 4 示例2 输入 16 输出 -1 虽然是找子序列,但是你想啊,要出现次数最多,那么一定是4和7 所以答案就只有4和7,分情况讨论下 #include<bits/stdc++.h> using namespace std; string str; int main() { ios::sync_with_stdio(false); cin>>str; int sum1=0,sum2=0; for(int i=0;str[i

面试恋爱史

喜夏-厌秋 提交于 2020-01-01 00:52:50
目录 面试的恋爱史 一:简单介绍 二 :秋招面试之初恋 1 和面试的第一个阶段--认识 2 和面试的第二个阶段--好感期 3 和面试的第三个阶段-- 怀疑 4 和面试的第四个阶段-- 信任 5 和面试的第五个阶段-- 长长久久 三: 从哪里得到校招信息 1. 牛客网你值得拥有 四:简历编写 1 个人信息部分 2 个人技能部分 3 项目经历部分 五:面试流程 1 提前批和秋招 2 内推和非内推 3 面试流程 4 笔试形式 六: 简历自我介绍 七:公司定位 1 互联网 2 银行 国企 八: 岗位定位 1 加分项: 2 推荐书籍: 九: 怎么谈钱 十: 秋招很深刻的时刻 1 也许一个简单的字符串操作值几十W 2 带着侥幸的心理被面的体无完肤 3 该长大了 十一: nothing 十二: 2020目标与展望 十三: 资料 面试的恋爱史 一:简单介绍 马上就是2020年,在此祝福大家新年快乐,身体棒棒哒。嗯。。整个秋招差不多结束了,虽然不是什么大厂吧,综合考虑高兴就好了,在这里还是想将我的经历分享给大家。本人小硕,本科计算机技术,研究生期间是软件工程,最后打算去成都一个公司。怎么说,本科的确是计算机技术专业,可是我们学了三年的数学,学了一门编程语言叫做pascal,what pascal???嗯就是这个上古时代的东东。整个秋招的经历,从面试公司的类别分为互联网大厂,中厂,国企,银行,运营商

腾讯Java面经

荒凉一梦 提交于 2019-12-10 15:50:13
网友 1 作者: xjia 链接: https://www.nowcoder.com/discuss/225392 来源:牛客网 1.jvm基本结构 2.内存分区 3.虚拟机栈异常类型以及复现代码 4.堆内存异常类型以及复现 5.直接内存怎么使用以及jvm对其管理 6.并发容器种类 7.concurrenthashmap数据结构 8.链表什么时候变红黑树以及变回链表 9.mysql数据引擎知道几种 10.innodb和mylsam区别 11.索引失效 12.覆盖索引 13.三次握手中ack的值是什么 14.死锁怎么产生的 15.怎么预防死锁 16.死锁代码demo 17.arraylist和linkedlist的区别 18.arraylist为什么查询快(ps除了随机访问之外还有什么原因) 19.io类型知道几种 20.nio是其中哪一种 网友 2 作者:很哇塞的大叔 链接: https://www.nowcoder.com/discuss/225485 来源:牛客网 1. 讲述下实习做了什么:略。 2. Java final关键字:略。 3. Java反射的特点:运行时任意构造对象,执行方法。 4. 进程间的通信:object的wait、notify;ReentranLock;CountDownLatch;CyclicBarrier。 5. 产生死锁的条件:互斥、不可剥夺