如何关闭循环?

问题描述

我得到了一个由n个数字组成的数组[a0,a1,a2,…,an-1],我应该编写一个名为sumOfThree的函数,该函数将数组和数字K作为仅有的2个参数并输出数组中唯一无序三元组的总数为K的数量。这是我的代码:

def sumOfArray(arr,K):
    arr.sort()
    
    s=set()
    for i in range(len(arr)-2):
        j=i+1
        k=len(arr)-1
        while j<k:
            
            if arr[i]+arr[j]+arr[k]==K:
                s.add((arr[i],arr[j],arr[k]))
            elif arr[i]+arr[j]+arr[k]<K:
                j+=1
            else:
                k-=1        
        
    return len(s)

但是我找不到答案。有什么帮助吗?

解决方法

正如MZ所说,您陷入了if条件。

递增j或递减k,以便满足条件j 或者,如果您完成了增量i并想要继续i + 1,只需添加一个break

        if arr[i]+arr[j]+arr[k]==K:
            s.add((arr[i],arr[j],arr[k]))
            break
,

就像MZ所说的,

当arr [i] + arr [j] + arr [k] == K时,i,j,k永不变。

但是,如果仅添加一个如cewaphi所述的中断,则while循环将在每个i循环的第一个匹配项处停止,而不是遍历所有组合。

这是解决问题的另一种方法:

server<- function(input,output,session){

datafile<- reactive({read.csv("input$file".csv })

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...