K链表反转一次和多次
来源:互联网 发布:查看informix端口 编辑:程序博客网 时间:2024/06/02 07:31
呃呃,一个单向链表,给定一个K,实现k+1和K的反转,这个只是反转一次已经降低难度了,貌似没打算考我递归
我擦嘞,当时竟然没考虑到K-1,你是怎么一回事啊,提示好多次了,好多问题买考虑全
可能需要我考虑一下几点
1.链表长度小于传过来的参数K
2.链表为空
3.k参数不合法
public static class ListNode {
int data;
ListNode next;
public ListNode(intvalue, ListNode next) {
this.data =value;
this.next =next;
}
}
public static int showListValueAndSize(ListNode head) {
if(head ==null){
return 0;
}
int count = 1;
while (head.next!=null) {
count++;
System.out.println("当前节点值为" +head.data);
head =head.next;
}
System.out.println("尾节点没有下一个,尾节点是"+head.data);
returncount;
}
public static ListNode findKthNodeFromEnd(ListNodehead, int k) {
if (head ==null){
throw new RuntimeException("待查找的链表不能为空");
}
if (k <= 0){
throw new RuntimeException("输入的位置数字不合法");
}
int size = showListValueAndSize(head);
if(k>size) {
throw new RuntimeException("k="+k+"的值大于链表的个数"+size+"位置数字不合法");
}
//指向当前节点
ListNode ahead = head;
//被切换的值,并没有移动指针只是换值
int temp;
int count = 0;
while (ahead.next !=null) {
if(count ==k-1){
temp =ahead.data;
ahead.data =ahead.next.data;
ahead.next.data =temp;
}
count++;
ahead =ahead.next;
}
return head;
}
- K链表反转一次和多次
- 一次遍历反转链表
- 反转链表和查找倒数第K个节点
- 合并两个有序链表/链表反转(逆置)/找链表倒数第k点(遍历一次)
- 逆置/反转单链表+查找单链表的倒数第k个节点,要求只能遍历一次链表
- 逆置/反转单链表+查找单链表的倒数第k个节点,要求只能遍历一次链表
- leetCode 25.Reverse Nodes in k-Group (以k个节点为一组反转链表) 解题思路和方法
- 《剑指offer》--- 链表中的倒数第k个结点 和 反转链表
- (C语言)链表的反转(一次遍历)
- 以k个元素为一组反转单向链表
- 给定一个链表,要求每隔k个元素反转
- 以k个元素为一组反转单向链表
- 链表中倒数第 K 个结点-反转链表
- 程序A+B问题(一次输入和多次输入)
- [leetcode]Reverse Nodes in k-Group 反转以k个节点为一组的链表
- 反转单向链表和反转双向链表
- 反转单向链表和反转双向链表
- 一次编写 多次重用
- Unhandled exception at 0x747E08B2 in evss.exe: Microsoft C++ exception: xsd:
- 关于innodb中MVCC的一些理解
- StringBuffer与StringBuilder的区别
- 主动式冷却解决方案提升高亮度 LED 性能---凯利讯半导体
- stm32f103之GP2Y1014AU
- K链表反转一次和多次
- 第十五周项目2
- freeswitch的配置和拨打电话尝试
- 6. ZigZag Conversion
- json解析错误
- 工具类
- RecyclerView的加载显示多种布局
- Hessian序列化详解
- 关于项目中的http和https的分析和理解