// 寻找链表的中间结点
func HW2023019() {
var listArr: [String] = []
// 测试用例
// let line1 = "00100 4"
// listArr = ["00000 4 -1", "00100 1 12309", "33218 3 00000", "12309 2 33218"]
// let line1 = "10000 3"
// listArr = ["76892 7 12309", "12309 5 -1", "10000 1 76892"]
// 开始代码
let line1 = String(readLine()!)
let inputArr = line1.components(separatedBy: " ")
while let line = readLine() {
listArr.append(String(line))
}
var nodeArr: [[String]] = []
var headNode: Node? = nil
for str in listArr {
let temp = str.components(separatedBy: " ")
if String(temp[0]) == String(inputArr[0]) {
let nextNode: Node = Node.init(String(temp[2]), 0, Node())
// 头部节点
headNode = Node.init(String(temp[0]), Int(temp[1])!, nextNode)
}else {
nodeArr.append(temp)
}
}
var node = headNode
while node?.next?.addr != nil && node?.next?.data != nil {
let addr = node?.next?.addr
for (i,str) in nodeArr.enumerated() {
if str[0] == addr {
var nextNode: Node? = nil
if str[2] != "-1" {
nextNode = Node.init(str[2], 0, Node())
}
node?.next = Node.init(String(str[0]), Int(str[1])!, nextNode ?? Node())
node = node?.next
nodeArr.remove(at: i)
break
}
}
}
var fast: Node? = headNode // 快指针走两步
var slow: Node? = headNode // 慢指针走一步
while fast != nil && fast?.next != nil {
slow = slow?.next
fast = fast?.next?.next
}
print(slow?.data ?? -1)
}
class Node {
var addr: String?
var data: Int?
var next: Node?
public init() {
self.addr = nil
self.data = nil
self.next = nil
}
public init(_ addr: String?, _ data: Int?, _ next: Node?) {
self.addr = addr
self.data = data
self.next = next
}
}
华为OD机试真题2023_Swift_100_寻找链表的中间结点
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 解题思路双层 for 循环将数组当前下标的左侧和右侧乘积算出来,再进行比较,如果相等就将当前下标保存到数组中,最后...
- 解题思路使用双层循环,外层谜面,内层谜底1、变序:判断交换顺序后是否相同2、去重:判断两个字符串去掉重复字符后是否...
- 解题思路1、统计各字符出现频次,找到出现频次最高的字符2、找到最高频次字符的下标并计算出差值3、所有差值中最小的就...
- 解题思路1、对报纸字符串和匿名字符串使用空格分隔2、对分隔后得到两个数组分别对其自己的每个元素进行排序3、对匿名数...