- 2024-07-15牛客TOP101:反转链表
文章目录1.题目描述2.解题思路3.代码实现1.题目描述2.解题思路 简单粗暴的写法,就是从头到尾挨个将所有结点的指向翻转即可。需要注意的是,翻转之后会失去原有指向的结点,所以需要提前保存。 具体做法就是,使用cur标记当前结点,代表这我们将要翻转这个结点
- 2023-11-27面试必刷TOP101:34、判断是不是二叉搜索树
题目题解publicclassSolution{privateTreeNodepre=null;/***给定一个二叉树根节点,请你判断这棵树是不是二叉搜索树***@paramrootTreeNode类*@returnbool布尔型*/publicbooleanisValidBST(TreeNoderoot){
- 2023-11-05面试必刷TOP101:21、旋转数组的最小数字
题目题解二分法:importjava.util.ArrayList;publicclassSolution{publicintminNumberInRotateArray(int[]array){//特殊情况判断if(array.length==0){return0;}//左右指针ijinti=0,j=array.
- 2023-11-04面试必刷TOP101:20、数组中的逆序对
题目题解解法一:暴力法importjava.util.*;publicclassSolution{/***代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可***@paramnumsint整型一维数组*@returnint整型*/publicintInversePairs(in
- 2023-11-03面试必刷TOP101:19、寻找峰值
题目题解如输入[2,4,1,2,7,8,4]时,会形成两个山峰,一个是索引为1,峰值为4的山峰,另一个是索引为5,峰值为8的山峰,如下图所示:importjava.util.*;publicclassSolution{/***代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可***@
- 2023-10-25面试必刷TOP101:12、单链表的排序
一、题目publicclassSolution{/***代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可***@paramheadListNode类theheadnode*@returnListNode类*/publicListNodesortInList(ListNodehead){
- 2023-10-21面试必刷TOP101:8、链表中倒数最后k个结点
一、题目输入一个长度为n的链表,设链表中的元素的值为ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为0的链表。二、题解2.1快慢指针第一个指针先移动k步,然后第二个指针再从头开始,这个时候这两个指针同时移动,当第一个指针到链表的末尾的时候,返回第二个指
- 2023-10-18面试必刷TOP101:5、合并k个已排序的链表
一、题目二、题解顺序合并解题思路1、将k个链表配对并将同一对中的链表进行合并(采用顺序合并的方法)2、第一轮合并后,k个链表合并成了k/2个链表,平均长度2n/k,然后是k/4、k/8...等等3、重复这一过程,知道获取最终的有序链表importjava.util.*;/***Definitionforsingly-linke
- 2023-10-14面试必刷TOP101:3、链表中的节点每k个一组翻转
一、题目将给出的链表中的节点每k 个一组翻转,返回翻转后的链表如果链表中的节点数不是k的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。二、题解publicclassSolution{/****@paramheadListNode类*@paramkint整型
- 2023-10-13面试必刷TOP101:2、链表内指定区间反转
一、题目将一个节点数为size链表m 位置到n位置之间的区间反转,要求时间复杂度O(n),空间复杂度O(1)。例如:importjava.util.*;/**publicclassListNode{*intval;*ListNodenext=null;*}*/publicclassSolution{/****@paramhea
- 2023-10-12面试必刷TOP101:1、反转链表
一、题目给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。示例:输入:{1,2,3}返回值:{3,2,1}二、题解2.1使用栈求解栈是先进后出的。实现原理就是把链表节点一个个入栈,当全部入栈完之后再一个个出栈,出栈的时候在把出栈的结点
- 2022-10-18#yyds干货盘点# 面试必刷TOP101:最小覆盖子串
1.简述:描述给出两个字符串s 和t,要求在s 中找出最短的包含t 中所有字符的连续子串。数据范围:,保证s和t字符串中仅包含大小写英文字母要求:进阶:空间复杂度 ,时间复杂
- 2022-10-18#yyds干货盘点# 面试必刷TOP101:反转字符串
1.简述:描述写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)数据范围: 要求:空间复杂度 ,时间复杂度 示例1输入:"abcd"返回值:"dcba"示例2输
- 2022-10-17#yyds干货盘点# 面试必刷TOP101:判断是否为回文字符串
1.简述:描述给定一个长度为n的字符串,请编写一个函数判断该字符串是否回文。如果是回文请返回true,否则返回false。字符串回文指该字符串正序与其逆序逐字符一致。数据范围:要
- 2022-10-17#yyds干货盘点# 面试必刷TOP101:合并区间
1.简述:描述给出一组区间,请合并所有重叠的区间。请保证合并后的区间按区间起点升序排列。数据范围:区间组数 ,区间内 的值都满足 要求:空间复杂度 ,时间复杂度 进阶:空间复杂
- 2022-10-16#yyds干货盘点# 面试必刷TOP101:大数加法
1.简述:描述以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。数据范围:,字符串仅由'0'~‘9’构成要求:时间复杂度 示例1输入:"1","99"返回值:"100"说明:1+9
- 2022-10-15#yyds干货盘点# 面试必刷TOP101:字符串变形
1.简述:描述对于一个长度为n 字符串,我们需要对它做一些变形。首先这个字符串中包含着一些空格,就像"HelloWorld"一样,然后我们要做的是把这个字符串中由空格隔开的单词反序,
- 2022-10-15#yyds干货盘点# 面试必刷TOP101:最长公共前缀
1.简述:描述给你一个大小为n 的字符串数组strs,其中包含n个字符串,编写一个函数来查找字符串数组中的最长公共前缀,返回这个公共前缀。数据范围: , 进阶:空间复杂度 ,时间
- 2022-10-12#yyds干货盘点# 面试必刷TOP101:买卖股票的最好时机(二)
1.简述:描述假设你有一个数组prices,长度为n,其中prices[i]是某只股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益1.你可以多次买卖该只股票,但是再次购买前
- 2022-10-10#yyds干货盘点# 面试必刷TOP101:打家劫舍(二)
1.简述:描述你是一个经验丰富的小偷,准备偷沿湖的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家,就不能再偷第二家,如果偷了第二家,那么就
- 2022-09-30#yyds干货盘点# 面试必刷TOP101:编辑距离(一)
1.简述:描述给定两个字符串str1和str2,请你算出将str1转为str2的最少操作数。你可以对字符串进行3种操作:1.插入一个字符2.删除一个字符3.修改一个字符。字符串长度满
- 2022-09-30#yyds干货盘点# 面试必刷TOP101:把数字翻译成字符串
1.简述:描述有一种将字母编码成数字的方式:'a'->1,'b->2',...,'z->26'。现在给一串数字,返回有多少种可能的译码结果数据范围:字符串长度满足 进阶:空间复杂度 ,时间复杂度
- 2022-09-29#yyds干货盘点# 面试必刷TOP101:不同路径的数目(一)
1.简述:描述一个机器人在m×n大小的地图的左上角(起点)。机器人每次可以向下或向右移动。机器人要到达地图的右下角(终点)。可以有多少种不同的路径从起点走到终点?备注:m和n小于等
- 2022-09-29#yyds干货盘点# 面试必刷TOP101:矩阵的最小路径和
1.简述:描述给定一个 n*m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。数据范