受leetcode 挑戰的啟發,我想在 R 中解決它。但是在嘗試通過蠻力解決它時,我遇到了 for 回圈的問題。
所以基本思想是給定一個整數向量,向量中的兩個整數相加為一個設定的目標整數。
首先我創建 10000 個整數:
set.seed(1234)
n_numbers <- 10000
nums <- sample(-10^4:10^4, n_numbers, replace = FALSE)
I 在 for 回圈中執行 for 回圈以檢查每個元素是否相互比較。
# ensure that it is actually solvable
target <- nums[11] nums[111]
test <- 0
for (i in 1:(length(nums)-1)) {
for (j in 1:(length(nums)-1)) {
j <- j 1
test <- nums[i] nums[j]
if (test == target) {
print(i)
print(j)
break
}
}
}
我的問題是它在達到 test == target 的正確條件之前就開始大量列印數字。我似乎無法弄清楚為什么。
uj5u.com熱心網友回復:
我認為您的代碼有幾個問題:
首先,您不必j手動增加您的數量,您可以在 for 陳述句中執行此操作。因此,如果您真的想在每一步中將 j 增加 1,您可以這樣寫:
for (j in 2:(length(nums)))
其次,您只破壞了 for 回圈的內部回圈。看這里打破 R 中的嵌套回圈以獲取更多資訊。
第三,nums 中有幾個條目給出了“正確”的結果target。因此,您的 if 條件運行良好并列印所有nums[i] nums[j]等于 的組合target。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/403612.html
標籤:
上一篇:在使用其他函式創建該元素后,無法使用dom選擇元素-appendChild
下一篇:字典作為值和索引作為鍵
