#include <iostream>
void test(){
// 我的表达
int arr[8] = {4, 3, 2, 7, 8, 2, 3, 1};
for(int i = 0; i < sizeof(arr)/ sizeof(arr[0]); i++){
if (arr[i] < 0)
{
if (arr[(-arr[i]) -1] < 0)
{
continue;
}
arr[(-arr[i]) -1] = -arr[(-arr[i]) -1];
}
else{
if (arr[(arr[i]) -1] < 0)
{
continue;
}
arr[arr[i] - 1] = -arr[arr[i] - 1];
}
}
for(int i = 0; i < sizeof(arr)/ sizeof(arr[0]); i++){
if (arr[i] > 0)
{
std::cout<<i + 1<<" ";
}
}
std::cout<<std::endl;
}
void test01(){
// 改进
int arr[8] = {4, 3, 2, 7, 8, 2, 3, 1};
for(int i = 0; i < sizeof(arr)/ sizeof(arr[0]); i++){
int x = arr[i] >= 0? arr[i] : -arr[i]; // 三目运算符
if (arr[x - 1] > 0)
{
arr[x-1] = -arr[x -1];
}
}
for (int i = 0; i < sizeof(arr)/ sizeof(arr[0]); i++)
{
/* code */
if (arr[i] > 0)
{
std::cout<<i + 1<<" ";
}
}
std::cout<<std::endl;
}
int main(void){
test();
test01();
return 0;
}
寻在数组中未出现的[1, n]区间的数字--使用三目运算符促使代码的优化表达
最新推荐文章于 2024-10-19 15:29:34 发布