53.最大子序和
给定一个整数数组 `nums` ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例1:
输入: nums = [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6 。
示例2:
输入: nums = [-1]
输出: -1
func maxSubArray(_ nums: [Int]) -> Int {
if nums.isEmpty {
return 0
}
var result = nums[0]
var sum = 0
for i in nums {
if sum > 0 {
sum += i
} else {
sum = i
}
result = result > sum ? result : sum
}
return result
}
let arr = [-2,1,-3,4,-1,2,1,-5,4]
print(maxSubArray(arr))
21.合并两个有序链表
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例1:
输入: l1 = [1,2,4], l2 = [1,3,4]
输出: [1,1,2,3,4,4]
func mergeTwoLists(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
var l1 = l1
var l2 = l2
var cur: ListNode?
// 1. 创建虚拟头节点。
let newList = ListNode.init(-1)
cur = newList
// 2. 当l1和l2不为空时,比较大小,拼接。
while l1 != nil && l2 != nil {
if l1!.val <= l2!.val {
cur!.next = l1
l1 = l1!.next
} else {
cur!.next = l2
l2 = l2!.next
}
cur = cur!.next
}
// 3. 当l1或l2为空时,拼接另一个链表剩余元素。
cur!.next = l1 ?? l2
return newList.next
}
kkk
- 题目描述:地址
- 难度:
- 出现频率:
- 思路:
- 题解: