Medium
You are given the head of a linked list, and an integer k.
Return the head of the linked list after swapping the values of the kth node from the beginning and the kth node from the end (the list is 1-indexed).
Example 1:

Input: head = [1,2,3,4,5], k = 2
Output: [1,4,3,2,5]
Example 2:
Input: head = [7,9,6,6,7,8,3,0,9,5], k = 5
Output: [7,9,6,6,8,7,3,0,9,5]
Constraints:
n.1 <= k <= n <= 1050 <= Node.val <= 100import com_github_leetcode.ListNode
/*
* Example:
* var li = ListNode(5)
* var v = li.`val`
* Definition for singly-linked list.
* class ListNode(var `val`: Int) {
* var next: ListNode? = null
* }
*/
@Suppress("NAME_SHADOWING")
class Solution {
fun swapNodes(head: ListNode?, k: Int): ListNode? {
var k: Int = k
var beg: ListNode? = null
var end: ListNode? = null
var node = head
while (node != null) {
k--
if (k == 0) {
beg = node
end = head
} else if (end != null) {
end = end.next
}
node = node.next
}
if (beg != null) {
val tem = beg.`val`
beg.`val` = end!!.`val`
end.`val` = tem
}
return head
}
}