File tree Expand file tree Collapse file tree 1 file changed +7
-5
lines changed Expand file tree Collapse file tree 1 file changed +7
-5
lines changed Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments