Skip to content

Commit 91899b6

Browse files
authored
Merge pull request #112 from SmartJuneThx/patch-1
关于题解一源码分析的`i >= right`条件
2 parents 0f4b75b + 700cece commit 91899b6

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

zh-hans/integer_array/partition_array.md

+7-5
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,12 @@ public:
4343
int right = 0;
4444
const int size = nums.size();
4545
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;
46+
if (nums[i] < k) {
47+
if (i != right) {
48+
int temp = nums[i];
49+
nums[i] = nums[right];
50+
nums[right] = temp;
51+
}
5052
++right;
5153
}
5254
}
@@ -58,7 +60,7 @@ public:
5860

5961
### 源码分析
6062

61-
自左向右遍历,遇到小于 k 的元素时即和`right`索引处元素交换,并自增`right`指向下一个元素,这样就能保证`right`之前的元素一定小于 k. 注意`if`判断条件中`i >= right`不能是`i > right`, 否则需要对特殊情况如全小于 k 时的考虑,而且即使考虑了这一特殊情况也可能存在其他 bug. 具体是什么 bug 呢?欢迎提出你的分析意见~
63+
自左向右遍历,遇到小于 k 的元素时即和`right`索引处元素交换,并自增`right`指向下一个元素,这样就能保证`right`之前的元素一定小于 k.
6264

6365
### 复杂度分析
6466

0 commit comments

Comments
 (0)