swift - 我的 Swift 代码出现错误 Can't form range with upperbound < lowerbound
问题描述
我尝试在 leetcode站点中运行我的代码。在 XCode 中,此代码编译成功。但在 leetcode 中是错误的:
致命错误:无法形成上限 < 下限的范围
任务描述:
给定一个由 n 个整数组成的数组 nums,在 nums 中是否存在元素 a、b、c 使得 a + b + c = 0?在数组中找到所有唯一的三元组,其总和为零。
我对这个任务的解决方案是:
class Solution {
func threeSum(_ nums: [Int]) -> [[Int]] {
var arr: [[Int]] = []
var fIndex = 0
var sIndex = 1
var tIndex = 2
for i in fIndex..<nums.count-2 {
for n in sIndex..<nums.count-1 {
for z in tIndex..<nums.count {
let sum = nums[i] + nums[n] + nums[z]
if sum == 0 {
arr.append([nums[i], nums[n], nums[z]])
}
}
sIndex += 1
tIndex += 1
}
fIndex += 1
}
return arr
}
}
// delete this in leetcode site
let threeNums = [-1, 0, 1, 2, -1, -4]
let sol = Solution()
print(sol.threeSum(threeNums))
我的代码中的问题在哪里?
解决方案
假设您的代码的所有其他部分都有效,您只需要在循环之前检查输入数组的元素是否少于 3 个:
class Solution {
func threeSum(_ nums: [Int]) -> [[Int]] {
var arr: [[Int]] = []
var fIndex = 0
var sIndex = 1
var tIndex = 2
if nums.count < 3 { return [] } // if there is less than 3 elements, there can't be any triplets
for i in fIndex..<nums.count-2 {
...
如果没有检查,您的代码将失败,例如,nums
只有一个元素,并且enums.count - 2
是-1
.
推荐阅读
- python - python gspread,不同的用户权限
- sql - 时间和出勤率
- multithreading - 当客户端是多线程的时,客户端对 HTTP 429 的正确反应是什么?
- excel - VBA Excel DataBar没有正负数,两种颜色,我需要完全填充最小负数
- node.js - 使用 browserify 读取 csv - fs.readFileSync 不是函数
- python - Python - 线程不会运行两个 while(1) 循环?
- mysql - MySql从没有索引的源表创建临时表
- php - 多站点 Wordpress、SSL 和 htaccess 以使用子文件夹作为根
- vuejs2 - 在 vue json 数据上应用 jquery 插件
- python - 马拉松 | client.get_participants('test')