2-Color Dutch National Flag Problem
2024-10-15 23:21:07
2-Color Dutch National Flag Problem
问题
a[0..n-1]中包含红元素或蓝元素;重新放置使得 红元素均在蓝元素之前。
循环不变式
每一次循环,a[0...k-1]是红色
实例代码
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
//将仅包含1,2组成的数组用循环不变式的方式将数组转换成2在前面,1在后面。
void loop_variant(vector<int>& vec) {
int k = 0;
int m = 0;
while(m < vec.size()) {
if (vec[m] == 2) {
int tmp;
tmp = vec[k];
vec[k] = vec[m];
vec[m] = tmp;
k++; //每一次循环k以前的都是2
}
m++;
}
}
};
int main() {
int arr[] = {1, 2, 1, 1, 1, 2, 2, 2, 1, 1};
vector<int> vec(arr, arr+10);
Solution* solution = new Solution();
solution->loop_variant(vec);
for (int i = 0; i < vec.size(); i++)
cout << vec[i] << " ";
cout << endl;
return 0;
}
最新文章
- python注释、脚本参数、字节码
- 你们信不信一句Console.WriteLine就能让你的控制台程序失去响应
- Oracle 查询性能优化实践
- HTML DOM Document
- CentOS 6.6 nginx PHP 配置
- python字符串关键点总结
- HDOJ 4745 Two Rabbits DP
- js获取json的value
- Laravel Cache 使用
- cygwin的安装,vi的使用,gcc,g++的使用(转)
- 数据结构(Java描述)之二叉树
- 【新建项目&;使用viewPager】实现一个Android电子书阅读APP
- extern “ C”的含义
- mac下CSV文件用FileReader、FileWriter读写乱码
- Oracle update 执行更新操作后的数据恢复
- ES6新特性概述
- MySQL的一些基本命令笔记(1)
- C#语言————选择结构
- Windows10下Docker监控管理工具:Hyper-V管理器
- 【Important】数据库索引原理