刷题
m0_65323355
Try to be handy
展开
-
刷题-牛客算法入门
描述给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。数据范围:0原创 2022-06-07 20:20:30 · 97 阅读 · 0 评论 -
刷题-牛客算法入门
AB11 合并两个排序的链表描述输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。数据范围:0≤n≤1000,−1000≤节点值≤1000要求:空间复杂度O(1),时间复杂度O(n)如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},所以对应的输出为{1,2,3,4,5,6}。实现1:(标记两个结点)/*public class ListNode { int val; ListNode next = nul原创 2022-05-15 19:23:21 · 267 阅读 · 0 评论 -
刷题-牛客算法入门
AB5 点击消除描述牛牛拿到了一个字符串。他每次“点击”,可以把字符串中相邻两个相同字母消除,例如,字符串"abbc"点击后可以生成"ac"。但相同而不相邻、不相同的相邻字母都是不可以被消除的。牛牛想把字符串变得尽可能短。他想知道,当他点击了足够多次之后,字符串的最终形态是什么?输入描述:一个字符串,仅由小写字母组成。(字符串长度不大于300000)输出描述:一个字符串,为“点击消除”后的最终形态。若最终的字符串为空串,则输出0。我的实现:将字符依次入栈,如果相邻字符相等,则出栈,否则原创 2022-05-15 19:21:28 · 178 阅读 · 0 评论 -
刷题-牛客算法入门
AB10 反转链表描述给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。数据范围: 0≤n≤1000要求:空间复杂度O(1) ,时间复杂度O(n) 。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。实现1:(栈)思路比较简单:遍历链表,将结点都存储在栈中;然后,将结点依次出栈,即得到了反转之后的链表。需要注意的是:1.首先可以设置一个哨兵结点dummy(作用:记录头结原创 2022-05-15 17:20:26 · 117 阅读 · 0 评论 -
刷题-牛客算法入门
AB8 循环队列描述请你实现一个循环队列,该循环队列可利用的空间大小等于n个int型变量的大小。操作:push x:将x加入到循环队列尾端。若循环队列已满,输出"full"(不含引号),否则不输出任何内容。保证x为int型整数。front:输出队首元素,队首不出队。若队列为空,输出"empty"(不含引号)。pop:输出队首元素,且队首出队。若队列为空,输出"empty"(不含引号)。输入描述:第一行输入两个整数n,q (1≤n,q≤10的5次方),表示循环队列可利用的空间大小和操作次数。原创 2022-05-12 19:51:37 · 267 阅读 · 0 评论 -
刷题-牛客算法入门
AB4 逆波兰表达式求值描述给定一个逆波兰表达式,求表达式的值。数据范围:表达式长度满足 1≤n≤(10的四次方),表达式中仅包含数字和 + ,- , * , /,其中数字的大小满足 ∣val∣≤200。示例:输入 [“2”,“1”,“+”,“4”,“*”]返回值 12我的实现:将数值放入栈中,当遇到运算符时出栈进行计算,并将计算的结果入栈,最后返回栈顶的值,即为最终的计算结果。其实第一个判断可以省略,放到switch语句的default里面,就不用匹配operation了。原创 2022-05-10 11:57:39 · 72 阅读 · 0 评论 -
刷题-牛客算法入门
AB3 有效括号序列描述给出一个仅包含字符’(‘,’)‘,’{‘,’}‘,’[‘和’]',的字符串,判断给出的字符串是否是合法的括号序列括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。数据范围:字符串长度0≤n≤10000要求:空间复杂度O(n),时间复杂度O(n)我的实现:很简单的一道题,但是我却做复杂了。我是直接将左括号(“({[”)加入到栈中,然后拿右括号去比对,else if里面写的很复杂,并且可以直接用pop()的,因为不一样直原创 2022-05-09 16:17:56 · 344 阅读 · 0 评论 -
刷题-牛客算法入门
AB7 队列描述请你实现一个队列。操作:push x:将x加入队尾,保证x为int型整数。pop:输出队首,并让队首出队front:输出队首:队首不出队输入描述:第一行为一个正整数n ,代表操作次数。(1≤n≤100000)接下来的n,每行为一个字符串,代表一个操作。保证操作是题目描述中三种中的一种。输出描述:如果操作为push,则不输出任何东西。如果为另外两种,若队列为空,则输出 "error“否则按对应操作输出。我的实现:(通过链表实现先进先出队列)与之前实现下压栈的思路差原创 2022-05-08 17:04:34 · 359 阅读 · 0 评论 -
刷题-牛客算法入门
AB2 栈的压入、弹出序列描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。0<=pushV.length == popV.length <=1000-1000<=pushV[i]<=1000pushV 的所有数字均不相同我的实现:写的比较复杂,首原创 2022-05-08 17:02:03 · 259 阅读 · 0 评论 -
刷题-牛客算法入门
AB1 栈描述请你实现一个栈。操作:push x:将加x入栈,保证 为 int 型整数。pop:输出栈顶,并让栈顶出栈top:输出栈顶,栈顶不出栈输入描述:第一行为一个正整数n,代表操作次数。(1≤n≤100000)接下来的n,每行为一个字符串,代表一个操作。保证操作是题目描述中三种中的一种。输出描述:如果操作为push,则不输出任何东西。如果为另外两种,若栈为空,则输出 "error“否则按对应操作输出。我的实现:(通过链表实现下压栈)import java.util.Scan原创 2022-05-08 16:56:28 · 556 阅读 · 0 评论