多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
<div id="div41"><h4> 41, 和为S的字符串 <h4></div> 假设序列的开始数字为a,结束数字为a+i,那么有(a+i-a+1)*(a+a+i)/2=sum 也就是(i+1)(2a+i)=2*sum,只需要找出这样的a和i就行,再根据a和i得出序列。 ```javascript function FindContinuousSequence(sum) { let a = 0, half = sum >> 1; const res = []; while (half--) { a++; let i = 1; while ((i + 1) * (2 * a + i) < 2 * sum) { i++; } if ((i + 1) * (2 * a + i) === 2 * sum) { const tmp = []; tmp.push(a); tmp.push(i); res.push(tmp); } } for (let i = 0; i < res.length; i++) { let num = res[i][1], k = 1; const tmp = []; tmp.push(res[i][0]); while (num--) { tmp.push(res[i][0] + k); k++; } res[i] = tmp; } return res; } ``` <div id="div42"><h4> 42, 和为S的字符串 <h4></div> ```javascript function FindNumbersWithSum(array, sum) { if (array.length < 2) return []; let left = 0, right = array.length - 1; const res = []; while (left < right) { if (array[left] + array[right] < sum) { left++; } else if (array[left] + array[right] > sum) { right--; } else { res.push(array[left], array[right]); break; } } return res; } ```