题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。import Foundation class For08Solution { func findMin(_ n: [Int]) -> Int { var s = n return find(&s, 0, (n.count-1)/2, n.count-1) } func find(_ n: inout [Int],_ left: Int,...
题目描述:根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。import Foundation class For06Solution { func rebuildTree1(_ preOrder: [Int], _ inOrder: [Int] ) -> TreeNode? { var p = preOrder var i = inOrder return recursive2(&p, &i, 0, i.count-1) ...
题目描述:输入一个链表,从尾到头打印链表每个节点的值。import Foundation class For05Solution { func printListNode(_ head: ListNode?) { if head?.next != nil { printListNode(head?.next) } print(head!.val) } } 算法思想:采用递归的解法,利用栈的原理。github地址:https://github.com/cubegao...
题目描述:把 n 个骰子扔在地上,所有骰子朝上一面的点数之和为 s。输入 n,打印出 s 的所有可能的值出现的概率。import Foundation class For43Solution { func diceProbility(diceCount:Int) { var arr = [[Int]]() let maxCount = 6 * diceCount + 1 let first = [Int](repeating: 0, count: maxCount) let next = [Int...
题目描述:求树中两个结点的最低公共祖先,此树不是二叉树,并且没有指向父节点的指针。import Foundation public class MyTreeNode { public var val: Int public var children: [MyTreeNode]? public init(_ val: Int) { self.val = val self.children = nil } } class For50Solution { func commonTreeNode(_ root: MyTr...