Python作业—— Leetcode题目选做(2)


77Combinations

题目内容:

Python作业—— Leetcode题目选做(2)


解题思路:

关于这个题目的思考解题方案的思考来源与这样一段C++代码

Python作业—— Leetcode题目选做(2)

这个算法的思想是,使用一个可变的向量vector,通过不断改变它其中的内容,符合条件时便可将它加入最终的结果列表中。

条件符合的由几个情况来判断:一是当其中的数字大于n,即超出要求范围时,将列表索引左移,改变其中数字;二是当列表索引到达最大结尾时,则当前列表符合要求,加入结果列表;如果以上二者均不满足,将列表索引右移,使列表中下一个值等于前一个值,而由于在循环开始时就已经有加1,故可保证列表中后面的值大于前面的值。

使用以上多个条件判断得到符合条件的多个列表加入到结果列表中后,得到所求结果列表,将其返回。


编写代码:

Python作业—— Leetcode题目选做(2)

出现错误(错误答案):

Python作业—— Leetcode题目选做(2)

错误分析:

Python语言与C++不同。即使将某一个元素加入列表中后,对该元素进行修改,也会导致列表中的该元素发生变化。故在将符合条件列表加入结果列表中时,可采用将其创建的对应的副本放入,从而使得结果列表中的元素不会再发生改变。


修改代码:

Python作业—— Leetcode题目选做(2)

正确,提交成功:

Python作业—— Leetcode题目选做(2)