牛客101题
高频并不等于经典,常考并不等于困难。
这101道题目,按照知识点划分,从难到易编排。
认认真真刷101道题目已经足够你拿到一个非常好的offer了。
这次,你与offer之间仅差一个模板速刷top101
Dataloading...
江湖夜雨十年灯
展开
-
【01 链表】BM8 链表中倒数最后k个结点
方法二:先找长度再找最后k思路:**链表不能逆向遍历,也不能直接访问。**但是对于倒数第kkk个位置,我们只需要知道是正数多少位还是可以直接遍历得到的。具体做法:step 1:可以先遍历一次链表找到链表的长度。step 2:然后比较链表长度是否比k小,如果比k小返回一个空节点。step 3:如果链表足够长,则我们从头节点往后遍历n−k次即可找到所求。描述输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。原创 2022-05-01 11:27:03 · 203 阅读 · 0 评论 -
【01 链表】BM6 判断链表中是否有环
【知识点】快慢指针/双指针解题思路:我们使用两个指针,fast 与 slow。它们起始都位于链表的头部。随后,slow 指针每次向后移动一个位置,而fast 指针向后移动两个位置。如果链表中存在环,则 fast 指针最终将再次与 slow 指针在环中相遇。描述判断给定的链表中是否有环。如果有环则返回true,否则返回false。数据范围:链表长度 0≤n≤100000 \le n \le 100000≤n≤10000,链表中任意节点的值满足 ∣val∣<=100000|val| <原创 2022-04-30 17:40:06 · 114 阅读 · 0 评论 -
【01 链表】BM2 链表内指定区间反转
描述将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n)O(n),空间复杂度 O(1)O(1)。例如:给出的链表为1→2→3→4→5→NULL,m=2,n=4,1\to 2 \to 3 \to 4 \to 5 \to NULL,m=2,n=4,1→2→3→4→5→NULL,m=2,n=4,返回 1→4→3→2→5→NULL.1\to 4\to 3\to 2\to 5\to NULL.1→4→3→2→5→NULL.数据范围: 链表长度 0<size≤10原创 2022-04-29 17:57:56 · 853 阅读 · 0 评论 -
【01 链表】BM1 反转链表
描述给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。数据范围: 0\leq n\leq10000≤n≤1000要求:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n) 。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。以上转换过程如下图所示:# class ListNode:# def __init__(self, x):# se原创 2022-04-29 17:27:55 · 992 阅读 · 0 评论 -
【010 贪心算法】BM95 分糖果问题
描述一群孩子做游戏,现在请你根据游戏得分来发糖果,要求如下:每个孩子不管得分多少,起码分到一个糖果。任意两个相邻的孩子之间,得分较多的孩子必须拿多一些糖果。(若相同则无此限制)给定一个数组 arrarr 代表得分数组,请返回最少需要多少糖果。要求: 时间复杂度为 O(n)空间复杂度为 O(n)数据范围:1≤n≤1000001≤n≤100000,1≤ai≤10001≤ai≤10001 \le n \le 1000001≤n≤100000 ,1 \le a_i \le 10001≤a_i≤10原创 2022-04-28 20:06:19 · 448 阅读 · 0 评论 -
【牛客101刷题大纲】
作者:企鹅大虾链接:https://www.nowcoder.com/discuss/92224来源:牛客网知识点相关1.算法:模拟 枚举 排序 贪心 双指针 构造 分治 哈希 高精度 dfs bfs 最短路 二分 动态规划 位运算 记忆化搜索 递归 前缀和 差分 拓扑排序 快速幂2.数据结构:数组 链表 栈 队列 堆(优先队列) 树 图论 字符串 并查集 单调栈3.数学:基础数学 数论 计算几何 位运算 博弈 概率论 组合数学 线性代数快速练习地址https://www.nowcode原创 2022-04-28 19:32:30 · 1086 阅读 · 0 评论