擅长:python、mysql、java
<p>你已经拥有的是非常棒的。这绝对没有什么问题,最关键的是,发生了什么是显而易见的</p>
<p>如果你真的想要一个单线解决方案,我认为你需要两个循环。一个循环用于<code>n</code>的值,该值可以是1到27(<code>sumdigits(999)</code>)之间的任何值。然后另一个循环遍历范围为1-1000的项目</p>
<p>下面是它的样子,但从时间复杂性的角度来看,它是非常低效的。你所拥有的时间复杂度O(n)是好的。但以理解的方式做这件事很复杂
O(n^n(n-1))。因为对于每个关键点,您必须在整个范围1-1000内进行迭代,但大多数都会被丢弃</p>
<pre><code>{n: [i for i in range(1000) if sumdigits(i) == n] for n in range(sumdigits(999) + 1)}
</code></pre>