目录标题
一、题目信息
LeetCode版本
牛客网版本
下面我以牛客网为例写代码
题目需要先输入一组数字代表链表的值,以#代表结尾。
下一行输入K代表每组个数
问题来了,怎么翻转?
假如有如下链表,且K=2.
那就从链表的一号下标开始,到2号下标,在这个区间内进行组内翻转。
如果元素不够K个时,就不进行翻转。
二、解题思路
将链表分为K组,每组组内进行翻转。每次翻转完后,更换翻转区间。其他细节放在代码注释中。
三、代码实现
class Main{
public static void reverse(String [] res,int start,int end){
while (start<end){
String tmp=res[start];
res[start]=res[end];
res[end]=tmp;
start++;
end--;
}
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String str;
str=scanner.nextLine();
//用空格分割链表每个元素
String strarr[]=str.split(" ");
int k;
k=scanner.nextInt();
//将链表分为K组,K组组内翻转,如果不够一组,就不进行翻转。
int start=0;
while (start+k-1<strarr.length-1){
reverse(strarr,start,start+k-1);
//下一组的起始位置
start=start+k;
}
/\*\*为什么i的上限是strarr.length-2?
\* 输入的要求是每个元素后面跟个 ->但是最后一个没有,
\* 最后一个元素就要最后输出。
\*/
for (int i = 0; i < strarr.length-2 ; i++) {
System.out.print(strarr[i]+"->");
}
/\* System.out.println(strarr[ strarr.length-2]);\*/
}
}
四、其他精选题目分享
(1)Python所有方向的学习路线(新版)
这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。
(2)Python学习视频
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。