如何使不符合要求的元素等于离它最近的一个元素
一、实现思路为:
1.首先对数组里面的数字进行一次遍历,如果当前的值不为“0”把值添加进结果数组中,否则对它进行处理。
2.处理不为“0”的值的时候,用一种“等距离比较”的方法,找出等距离内的左右2个值,优先看左边的值是否为“0”,如果是的话跳过,如果不是的话将结果数组内的当前值替换为此值。
3.距离的最大值为数组长度减去1,遍历的时候注意i-j的值不小于0,i+j的值要小于数组长度。
具体实现代码如下:
string [] s = new string[9] {“0”,“0”,“1”,“0”,“0”,“0”,“4”,“0”,“3”};
string [] result = new string[9];
for(int i =0 ;i<s.Length;i++)
{
if(s[i] != 0)
{
result[i] = s[i];
continue;
}
//j是距离,初始化距离为1
for(int j = 1;j<s.Length;j++)
{
if(i - j >= 0)
{
//左边距离为j的元素不等于0时
if(s[i-j] != 0)
{
result[i] = s[i-j];
break;
}
}
if(i+j<s.Length)
{
//右边距离为j的元素不等于0时
if(s[i+j] != 0 )
{
result[i] = s[i+j];
break;
}
}
}
}
for(int i = 0; i < result.Length;i++)
{
Console.WriteLine(result[i]);
}
Console.ReadLine();