将来的工作需要用到Swift,可是看语法什么的好无聊啊,最近又恰好发现leetCode支持Swift,以前又没刷过leetCode,于是就借着这个机会,边刷边学学Swift。
题目:
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1]
题目本身没什么意思,要在时间复杂度o(n)内求解,主要就是利用map记录一下value-index。这里主要是学习一下Swift的语法,下面是leetCode上别人的solution。关键的语法点就是数组,字典的使用,变量的定义,if-else。
class Solution {
func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
var selectedIndices = [Int:Int]()
for (index, element) in nums.enumerated()
{
selectedIndices[element] = index
}
for (index, element) in nums.enumerated()
{
let compliment = target - element
if let selectedIndex = selectedIndices[compliment]
{
if selectedIndex != index
{
return [index, selectedIndex]
}
}
}
return []
}
}