<p>想要课程的请访问 icourse8.com/nlp_tensorflow.html</p>
<p>想要课程的请访问 icourse8.com/nlp_tensorflow.html</p>
<h5>更多课程请访问icourse8.com,慕课网全集都有,还有跟多机构课程</h5>
<h5>无论是入门,还是提高,总有一门课程适合你</h5>
<div>icourse8.com/nlp_tensorflow.html</div>
第1章 课程导学
第2章 基础知识
第3章 循环神经网络(RNN与LSTM)
第4章 NLP基础
第5章 文本处理方法
第6章 实战之聊天语料处理
第7章 聊天机器人原理
第9章 聊天机器人训练-seq2seq的模型编写
第10章 聊天机器人模型的训练和验证
第11章 Android的打包与发布
给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。
k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。
示例 :
//用尾插法实现
class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
if (head == null) return null;
ListNode tmp=head,tail=head;
int count=1;
//检查是否够长
while (tail.next!=null && count<k){
tail = tail.next;
count++;
}
//System.out.println("tail.value"+tail.val);
if (count == k){
//用递归,head变一变
//tail后面都排好了
tail.next = reverseKGroup(tail.next,k);
ListNode p;
//尾插,tmp指向第一个,tail指向最后一个
while (tmp != tail){
p=tail.next;
tail.next = tmp;
tmp = tmp.next;
tail.next.next = p;
}
return tail;
}
else return head;
}
}
给定这个链表:1->2->3->4->5
当 k = 2 时,应当返回: 2->1->4->3->5
当 k = 3 时,应当返回: 3->2->1->4->5
说明 :
你的算法只能使用常数的额外空间。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
ListNode prev = null;
ListNode cur = head;
ListNode next = null;
ListNode check = head;
int canProceed = 0;
int count = 0;
// 检查链表长度是否满足翻转
while (canProceed < k && check != null) {
check = check.next;
canProceed++;
}
// 满足条件,进行翻转
if (canProceed == k) {
while (count < k && cur != null) {
next = cur.next;
cur.next = prev;
prev = cur;
cur = next;
count++;
}
if (next != null) {
// head 为链表翻转后的尾节点
head.next = reverseKGroup(next, k);
}
// prev 为链表翻转后的头结点
return prev;
} else {
// 不满住翻转条件,直接返回 head 即可
return head;
}
}
}
原文地址:https://blog.51cto.com/14127734/2390630
时间: 2024-10-09 05:27:15