首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
学无止境呀~
获赞
291
粉丝
5
关注
2
看过 TA
10
女
门头沟学院
2021
前端工程师
IP属地:未知
学无止境呀~
私信
关注
拉黑
举报
举报
确定要拉黑学无止境呀~吗?
发布(31)
评论
刷题
收藏
学无止境呀~
关注TA,不错过内容更新
关注
2019-09-18 22:07
门头沟学院 前端工程师
剑指offer 44. 翻转单词顺序序列
44. 翻转单词顺序序列 题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么? 思路以空格为分界符,切分字符串可以得到一个字符串数组,对数字逆序遍历进行拼接。 代码实现 # -*- coding:utf-8 -*- class Solution: def Revers...
0
点赞
评论
收藏
分享
2019-09-20 20:28
已编辑
门头沟学院 前端工程师
剑指offer 43. 左旋转字符串
43. 左旋转字符串 题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! 思路思路一:循环左移,对于空字符串或者位移次数为0时,直接返回原字符串即可,位移次数n的有效位移次数应该是n%len(s),剩下的用字符串的切片即可。但是这种方法引入了新的空间,用了切片就是引入了新的字符串空间。思路二:灵活利用字符串翻转原理:利用list的翻转,没有引入新的...
0
点赞
评论
收藏
分享
2019-09-18 21:26
门头沟学院 前端工程师
剑指offer 34. 第一个只出现一次的字符
34. 第一个只出现一次的字符 题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 思路建立一个哈希表,第一次扫描的时候,统计每个字符的出现次数。第二次扫描的时候,如果该字符出现的次数为1,则返回这个字符的位置。时间复杂度为 代码实现 # -*- coding:utf-8 -*- class Solution: def FirstNotRepeatingChar(self, s): # write code here length ...
0
点赞
评论
收藏
分享
2020-03-17 23:57
已编辑
门头沟学院 前端工程师
剑指offer 27. 字符串的排列
27. 字符串的排列 题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 思路递归法,问题转换为先固定第一个字符,求剩余字符的排列;求剩余字符排列时跟原问题一样。遍历字符串,固定可能出现在第一个位置的字符,作为第一个字符,后面剩下的字符串的组合用递归使用本函数的方式得到。 代码实现 # -*- coding:utf-8 -*- class Solution: def Permutation(self, ss): # write code...
0
点赞
评论
收藏
分享
2019-09-12 19:15
门头沟学院 前端工程师
剑指offer 2. 替换空格
2. 替换空格 题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路直接用python的replace()函数 代码实现 # -*- coding:utf-8 -*- class Solution: # s 源字符串 def replaceSpace(self, s): # write code here return s.replace(' ', '%20')
0
点赞
评论
收藏
分享
2019-09-11 20:44
已编辑
门头沟学院 前端工程师
剑指offer 51. 构建乘积数组
51. 构建乘积数组 题目描述给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]A[1]...A[i-1]A[i+1]...A[n-1]。不能使用除法。 思路思路一:两重循环,在遍历数组A的时候,A[i]赋值为1,计算B[i]。时间复杂度为思路二:时间复杂度为可以把B[i]=A[0]A[1]....A[i-1]A[i+1]....A[n-1]。看成A[0]A[1].....A[i-1]和A[i+1].....A[n-2]A[n-1]两部分的乘积。即通过A[i]项将B[i]分为两部分的乘积。效果相当于是个对角矩阵。第一个for...
0
点赞
评论
收藏
分享
2019-09-10 21:47
门头沟学院 前端工程师
剑指offer 50. 数组中重复的数字
50. 数组中重复的数字 题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 思路思路一:开辟一个新的数组空间,将遍历过的数插入新的数组中,如果遇到重复的,就返回True。增加了额外的空间,时间复杂度为O(N),空间复杂度为O(N)。 思路二:利用长度为n的数组里的所有数字都在0到n-1的范围内这一个条件,数组中的每一个数字值小于数组长度,如果数组中无任何重复的数字,则数...
0
点赞
评论
收藏
分享
2019-09-10 20:17
门头沟学院 前端工程师
剑指offer 40. 数组中只出现一次的数字
40. 数组中只出现一次的数字 题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 思路思路一:遍历数组,对每个元素直接利用python数组的count函数,因为count()也是,等价于遍历数组再计数,所以时间复杂度为,思路二:利用字典保存元素出现次数,最后选出字典中value为1的key返回。时间复杂度为思路二的优化:由于一个整型数组里除了两个数字之外,其他的数字都出现了两次。当字典中有某个key时,删除这个key,否则这个key的value为1插入字典,时间复杂度为 思路三:看题解都是用位运算来做的,我觉得这个方法效率比优化后的思路二低...
wslsdx:
思路二的时间复杂度 是O(N)??? 字典的查找和插入操作都是比较慢的吧,我觉得代码是简单了,效率并不高。
0
点赞
评论
收藏
分享
2019-12-02 23:28
已编辑
门头沟学院 前端工程师
剑指offer 37. 数字在排序数组中出现的次数
37. 数字在排序数组中出现的次数 题目描述统计一个数字在排序数组中出现的次数。 思路思路一:暴力解,遍历数组并对比,一个循环,时间复杂度为思路二:由于数组是一个排序过的数组,所以可以用二分查找法,定位k的第一次出现位置和最后一次出现位置,时间复杂度为 代码实现暴力解,遍历数组 # -*- coding:utf-8 -*- class Solution: def GetNumberOfK(self, data, k): # write code here count = 0 for i in range(len(data)): ...
0
点赞
评论
收藏
分享
2019-09-09 20:41
门头沟学院 前端工程师
剑指offer 35. 数组中的逆序对 ***这道题挺难的
35. 数组中的逆序对 ***这道题挺难的 题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 思路思路一:暴力解,两个循环,时间复杂度,但是会超出运行时间,导致失败。思路二:分治的思想,将数组不断一分为二,直到数组中只有两个元素,统计逆序对个数。然后对相邻的两个子数组进行合并,由于已经统计了这两对子数组内部的逆序对,因此需要把这两对子数组进行排序,避免在之后的统计过程中重复统计。在合并的时候也要计算组间的逆序对个数。逆序对的总数 =...
0
点赞
评论
收藏
分享
2019-09-06 20:57
门头沟学院 前端工程师
剑指offer 32. 把数组排成最小的数
32. 把数组排成最小的数 题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路将数组中的数字连接起来,排成一个最小的数字。将'大数'往后放'小数'往前放,如何定义'大数'和'小数'?比如说有两个数a和b,如果ab>ba则a是'大数'b是'小数',要排成ba。于是,这道题目变成了一个排序问题,将能把组合出来的数字变大的数字往后排。我们这里需要自己定义一个比大小的比较方法。用冒泡排序,可以解决此题。 代码实现 # -*- coding:utf-8 -...
0
点赞
评论
收藏
分享
2019-09-06 19:59
门头沟学院 前端工程师
剑指offer 30. 连续子数组的最大和
30. 连续子数组的最大和 题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1) 思路从前往后遍历,最大的连续子序列的和是由当前元素和之前的最大连续子序列的和叠加在一起形成的。如果之前的最大连续子序列的...
不不丶不将就:
兄弟,那要都是负数咋办啊?
0
点赞
评论
收藏
分享
2019-10-12 18:48
已编辑
门头沟学院 前端工程师
剑指offer 28. 数组中出现次数超过一半的数字
28. 数组中出现次数超过一半的数字 题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 思路思路1:遍历数组,用字典dict存储数组中某个数字出现的次数,当这个数字出现的次数大于数组长度的一半时,返回这个数字。时间复杂度为O(n),空间复杂度O(1)~O(n),开辟了字典dict,最优为1最差为n。思路2:对数组进行排序,如果数组中有一个数字出现的次数超过数组长度的一半,那么这个数字一定在数组的中间。python的sort(...
0
点赞
评论
收藏
分享
2019-09-05 18:30
门头沟学院 前端工程师
剑指offer 1.二维数组的查找
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路数组是有序的,每行递增,每列递增,所以可以取右上角或者左下角,如果从左下角开始查找,当要查找数字比左下角数字大时,右移;要查找数字比左下角数字小时,上移。同理当从右上角开始查找时,当要查找数字比右上角数字大时,下移;要查找数字比右上角数字小时,左移。 代码实现 # -*- coding:utf-8 -*- # 从右上角开始查找 class Solution: # array 二维...
0
点赞
评论
收藏
分享
2019-09-05 18:31
已编辑
门头沟学院 前端工程师
剑指offer 6. 旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 思路思路一:在两段范围内都是非降序,当不符合这个规律时,就找到了最小数字原数组是非递减排序的,旋转后,后面的数组整体小于前面的数组。暴力解,遍历数组,当找到第i块大于第i+1块的,返回i+1的元素,时间复杂度:O(n),空间复杂度:O(1)思路二:二分法查找,这里需要注意的是当rotateArray[mid] = ...
0
点赞
评论
收藏
分享
1
2
3
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客企业服务