首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
牛客141762904号
获赞
25
粉丝
1
关注
0
看过 TA
0
广东技术师范大学
2020
Java
IP属地:未知
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑牛客141762904号吗?
发布(25)
刷题
牛客141762904号
2020-04-29 01:05
Java
[slide_window]包含min函数的栈
思路: 一开始只是简单的模拟有min的栈,最直白的就是用一个指针或者变量维持最小值,每次插入删除都更新一次,在调用min的时候就是O(1),但是这个就是每次都要sort的复杂度(不是find,找不到对比的对象,这里小混),基础的就是这么做了。看了别人的发现是滑动窗口,只不过活动窗口的时候,当前最值的左区是先失效的,所以每一次的最值都不用考虑左界左的情况只需取代他们,最值右区是候选最值,即使不是当前最值也可能在在他左边的旧最值消失后成为新的最值。这道题是反的,每次top走到一个新值和旧的最值对比,旧最值的左边是有可能成为新最值的(统辖新最值的左边),旧最值的右肯定比旧最值先消失,先消失的一端对于...
0
点赞
评论
收藏
转发
牛客141762904号
2020-04-26 18:30
已编辑
Java
[basic_recursion]树的子结构
思路: 1.一开始马上想到的是KMP的思路关注点在加速匹配上,但树形结构好像很麻烦于是考证转化为数组存储是否可以匹配,因为数组的二叉树靠下表的2倍关系确定前后节点,所以这个思路好像是可行的,但想了一下要是稀疏树那数组的长度是指数级想想可怕就转去其他思路(但不代表这是不可行的,后来输出样例也是数组输出)2.还想着KMP用二叉链存储,那怎么查看匹配子树的头尾是否有重合,好像也是要顺序查下来,或者逆序也是要顺序递归比树,为了加速匹配省去一个一个遍历查找才用这种,结果这种的子步骤本身也要遍历查找,放弃了(可能还是有方法的)3.用二叉树递归查找了,一开始思考状态转移时走了个岔路,f():1两个树根相同则...
0
点赞
评论
收藏
转发
牛客141762904号
2020-04-25 14:06
Java
[base_recursion]合并链表
思路: 合并链表最基本的两个思路:1.吧表头最小的一个抽出,然后比较被抽后的剩下的链表继续操作2.比较表头链表然后选择最小的一个(抽出)插入到没被选中的链表的合适的位置(并不是表头的下一个,而是那种一边<=另一边>的中间点插入,这里思路混乱了废了一些时间),这个版本繁琐远不如上个版本好,没有去实现。 然后1又有递归和非递归写法,非递归最熟就是遍历两个链表,递归的因为非递归太简洁直观而想不到怎么需要递归哪里递归,看了题解后别人其实就是吧非递归版本的迭代过程用递归实现而已。但其实这样也有个作用:1.非递归的操作其实是取出每一个,然后有一个专门的头节点负责串起来(push_back),每...
0
点赞
评论
收藏
转发
牛客141762904号
2020-04-25 11:42
Java
[water]反转链表
思路: 1.链表反转遍历版和递归版,递归版可以在前馈过程反转,结尾处回递结果,也可在结尾处反转然后回递,这里做了第一种 struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; //11:06--11:09 class Solution2 { public: ListNode* ReverseList(ListNode* pHead) { ListNode* head=NULL, *mi...
0
点赞
评论
收藏
转发
牛客141762904号
2020-04-25 11:04
Java
[water_rearTopNode]链表中倒数第k个结点
思路: 用两种方法:1.设一个pre在p跑了k个单位后再一起移动到结尾2.直接把整个list给反转过来,三指针,练手,这里会输出node[k]之后所有所以不能用(这种跟递归差不多,但直接递归无法处理返回ind和返回node,封装个专门回传的对象应该可以,还有就是存入栈那空间换时间) struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; //2:12--2:39 class Solution { public...
0
点赞
评论
收藏
转发
牛客141762904号
2020-04-25 02:09
Java
[water_dp_fibnaci]矩形覆盖
题目: 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2n的大矩形,总共有多少种方法?比如n=3时,23的矩形块有3种覆盖方法: 思路: 其实在列举前几个的时候就知道是fibnaci(除了0的情况不符合,而且样例还真带0真是无聊),但是不知道为什么是fibnaci。和跳台阶对比发现fibnaci都是每个状态的更新都是有两条通路的情况,跳台阶很直观,但是这道题得把问题进行比较好的描述抽象才行:一次可以在上一次的基础上添加一块,若这一块竖着放啧基于上一个状态无重复的所有情况再加一个竖的也都是无重复的,但此外的那些情况该怎么表示呢?(马后炮)如果列举出前...
0
点赞
评论
收藏
转发
牛客141762904号
2020-04-25 01:40
Java
[water_doubleRapidPow]数值的整数次方
题目: 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0 思路: 还是矩阵快速幂,只是要细分double幂的为0情况为负情况:base==0和!=0, r>0/r<0/r=0;1.base==0: r>0 return0; &nbs...
0
点赞
评论
收藏
转发
牛客141762904号
2020-04-25 00:49
Java
[water_moveOp]二进制中1的个数
题目: 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路: 1.c和java底层是补码二进制,直接用位运算计数,就是负数的补码右移是补1,左移补0,所以右移无穷1,所以得限制int 32个位。2.题解区里的巧妙思路,既然底层是二进制了,可不可以直接统计出1的个数而不是遍历,当为正数时,-1操作肯定是让第一个1(不管你有多少个1)变为0,则n&(n-1)就是刚好让第一个1在内后面全部0掉,于是可以利用这个删除1的思路来统计,又类似于快速幂,对于负数,负数补码-1是添0,所以也是删除1的操作,而且删到最后负数越界那里又回到0,所以是统一操作。 #include <...
0
点赞
评论
收藏
转发
牛客141762904号
2020-04-24 16:25
Java
[rapid_pow]斐波那契数列
思路: 练习矩阵的快速幂,就是将幂乘的指数累加过程变成变底数后指数的累乘缩小,然后在fibnaci加速就是将累次的计算(递推式的)用矩阵乘法来表示,然后就可以用乘法中的数学规律加速实现快速幂。代码也很巧妙,就是在每一次扩大底数缩小指数的时候,若指数为奇数,这原底数肯定会被抽出一个单独乘在结果里,偶数则没有这一步,最后底数肯定会合并到指数为1的情况(或者上来就是指数为1或2的特殊情况),这个时候把这个底数抽出乘到结果里,然后底数又增大了(超出要的次数了),然后循环结束,但增大的底数并没有更新到结果,代码的出口只有每次奇数的时候更新到结果这一个出口,不管一开始是不是奇数最后都会迭代到奇数,所以代码...
0
点赞
评论
收藏
转发
牛客141762904号
2020-04-24 01:41
已编辑
Java
[binary_search]旋转数组的最小数字
题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 思路: 这道题花费了好多时间,15:19--0:58,看起来如此简单的一道题花费的时间让我崩溃。遇到二分边界就是噩梦。一开始思路不清晰摸索了一番发现即使这种旋转数组二分依然可以查找就是要分情况。后来发现不是二分,而是用二分直接找断点。查找的目标是mid的哪一边的两端不是严格正序就是一个中断,然后思路混乱花了好久才分出...
0
点赞
评论
收藏
转发
牛客141762904号
2020-04-22 20:05
已编辑
Java
[deque]滑动窗口的最大值
题目: 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6,[2,5,1]}。 思路: 最原始的思路是用个数据结构模拟,就用deque,然后最暴力...
0
点赞
评论
收藏
转发
牛客141762904号
2020-04-21 12:48
Java
[graph_matrix/greedy]西西所在的国家有N座城市
题目: 西西所在的国家有N座城市,每座城市都有一道传送门,城市 i 的传送门通往城市 a[i]。当西西位于城市 i 时,每次他可以执行以下三种操作中的一种:花费 A 的费用,从城市 i 前往城市 a[i];如果 a[i] > 1,可以花费 B 的费用,将 a[i] 的值减少 1;如果 a[i] < N,可以花费 C 的费用,将 a[i] 的值增加 1。现在,西西想从城市 1 前往城市 N,那么他至少要花费多少费用?input:第一行输入四个整数 N、A、B、C(1 < N <= 10000,1 <= A、B、C <= 100000)。第二行输入 N 个整数 ...
0
点赞
评论
收藏
转发
牛客141762904号
2020-04-12 01:03
Java
[interview_netease]九进制大数相加
思路: 这道题只a30+%,最后发现是小数0没处理,但此外其实忽略了最大的问题就是是个大数题目,长度在200位错误版:巨坑1:c++字符串拼接不支持数字,而且字面值字符串拼接也要和string对象间隔才可以实现(记成了数值和string相间,在拼接字符串找错花了很多时间。。。python/java。。。) #include <iostream> #include <vector> #include <string> #include <sstream> using namespace std; class Solution { public: ...
0
点赞
评论
收藏
转发
牛客141762904号
2020-04-11 18:12
已编辑
Java
[water_search]机器人的运动范围
题目 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子? 思路: 与上一道的区别是去重计算,最直接的思路是map记录,一开始在想回溯的时候在交叉点处犹豫,担心会不会少算,但当他到达交叉点的时候接下来的所有可能已经被上一个来这里的点搞定了,所以无缺(不会有:上一个点阻止我进入但是有些路径是只有我进入才能到达...
0
点赞
评论
收藏
转发
牛客141762904号
2020-04-11 17:01
Java
[water_search]矩阵中的路径
题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。 思路: 最直接的就是搜索了,走迷宫,但想了半个小时还有没有其他解法类似去重啥的,想不出看讨论是搜索。。。然后开始前要做很多准备工作,打映输出,弄个坐标对象pos(x, y),节点对象(val, fl...
0
点赞
评论
收藏
转发
1
2
工具箱
TA的圈子
暂未加入圈子
TA的圈子
TA的笔记
暂无笔记
TA的笔记
登录
0
天
已登录
0
天
连续登录
0
人
今日访客
牛客网
牛客企业服务