我似乎无法完成我的学习任务. 我被指针搜索方法困住了.但是,我在考虑在哪里更改这些数字.我最终会得到一百万美元.
我有一个数字数组,假设是int[] numbers = { 0, 0, 1, 1, 1, 0, 0, 1 };
我要把它弄得漂亮些.美丽的是一行中的某个数字(可能是零)是第一个0.其余的都是1.
For example: 001111是美丽的,但00001011不是.
我可以把每个数字都换成相反的数字.为了使数组美观,有必要输出最小的置换值.
Ex. 0110
输出:1
Ex. 11.
发帖主题:Re:Kolibri
Note个 在第一个例子中,我们可以替换最后一个数字,然后目标将看起来像0111.在第二个例子中,原始目标已经很漂亮了.
我应该往哪个方向想呢? 现在我只能找到由0组成的左边的范围.在正确的范围内,0被1替换.
static void FindZeroSegment(int[] numbers, out int start, out int end)
{
start = -1;
end = -1;
for (int i = 0; i < numbers.Length; i++)
{
if (numbers[i] == 0)
{
if (start == -1)
{
start = i;
}
end = i;
}
else
{
if (start != -1)
{
break;
}
}
}
}
static int CountOnesInRightSegment(int[] numbers, int startIndex)
{
int count = 0;
for (int i = startIndex + 1; i < numbers.Length; i++)
{
if (numbers[i] == 1)
{
count++;
}
else
numbers[i] = 1;
}
return count;
}
static void Main(string[] args)
{
int[] numbers = { 0, 0, 0, 1, 0, 0 };
// Output 0, 0, 0, 1, 1, 1
int start;
int end;
FindZeroSegment(numbers, out start, out end);
int rightSegment = CountOnesInRightSegment(numbers, end);
foreach (var item in numbers)
{
Console.Write(item);
}
}