We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
2 parents 0f4b75b + 700cece commit 91899b6Copy full SHA for 91899b6
zh-hans/integer_array/partition_array.md
@@ -43,10 +43,12 @@ public:
43
int right = 0;
44
const int size = nums.size();
45
for (int i = 0; i < size; ++i) {
46
- if (nums[i] < k && i >= right) {
47
- int temp = nums[i];
48
- nums[i] = nums[right];
49
- nums[right] = temp;
+ if (nums[i] < k) {
+ if (i != right) {
+ int temp = nums[i];
+ nums[i] = nums[right];
50
+ nums[right] = temp;
51
+ }
52
++right;
53
}
54
@@ -58,7 +60,7 @@ public:
58
60
59
61
### 源码分析
62
-自左向右遍历,遇到小于 k 的元素时即和`right`索引处元素交换,并自增`right`指向下一个元素,这样就能保证`right`之前的元素一定小于 k. 注意`if`判断条件中`i >= right`不能是`i > right`, 否则需要对特殊情况如全小于 k 时的考虑,而且即使考虑了这一特殊情况也可能存在其他 bug. 具体是什么 bug 呢?欢迎提出你的分析意见~
63
+自左向右遍历,遇到小于 k 的元素时即和`right`索引处元素交换,并自增`right`指向下一个元素,这样就能保证`right`之前的元素一定小于 k.
64
65
### 复杂度分析
66
0 commit comments