C# 判断数组缺少某一数字
假如一个数组为inta[8]={1,3,4,5,6,7,8,10};用什么方法能查询出该数组元素缺少2和9呢?顺便说一下,数组中的元素不一定是顺序排列的,有可能被打乱{3...
假如一个数组为 int a[8]={1,3,4,5,6,7,8,10};
用什么方法能查询出该数组元素缺少2和9呢?顺便说一下,数组中的元素不一定是顺序排列的,有可能被打乱{3,7,1,4,8,5,10,6}
注意:缺少的数是随即的,1-10不一定缺少哪个。先谢谢了。 展开
用什么方法能查询出该数组元素缺少2和9呢?顺便说一下,数组中的元素不一定是顺序排列的,有可能被打乱{3,7,1,4,8,5,10,6}
注意:缺少的数是随即的,1-10不一定缺少哪个。先谢谢了。 展开
4个回答
展开全部
我来给楼主个好办法吧
已知道 int a[8]={1,3,4,5,6,7,8,10};
添加下面代码,经编译过的完全符合楼主的要求,希望对楼主有帮助
ArrayList sum = new ArrayList();//注意添加命名空间 using System.Collections;
for (int i = 1; i <= 10; i++)
{
sum.Add(i);
}
foreach (int j in a)
{
sum .Remove (j);
}
string str="你缺少的数字是:";
foreach (int k in sum )
{
str+=k.ToString ()+" ";
}
MessageBox .Show (str );
已知道 int a[8]={1,3,4,5,6,7,8,10};
添加下面代码,经编译过的完全符合楼主的要求,希望对楼主有帮助
ArrayList sum = new ArrayList();//注意添加命名空间 using System.Collections;
for (int i = 1; i <= 10; i++)
{
sum.Add(i);
}
foreach (int j in a)
{
sum .Remove (j);
}
string str="你缺少的数字是:";
foreach (int k in sum )
{
str+=k.ToString ()+" ";
}
MessageBox .Show (str );
展开全部
首先你在c#定义数组的格式就是错误的,长度应该指定在后边或者直接这样写
int[] a={1,3,4,5,6,7,8,10}; 可以定义一个集合,然后遍历你那个数组把元素添加到集合中去,最后在用集合的Contains()方法判断集合中有没有那个元素,代码:
int[] a = { 1, 3, 4, 5, 6, 7, 8, 10 };
List<int> list = new List<int>();
foreach (int i in a)
{
list.Add(i);
}
if (!list.Contains(2))
{
Console.WriteLine("数组中缺少2");
}
Console.ReadKey();
int[] a={1,3,4,5,6,7,8,10}; 可以定义一个集合,然后遍历你那个数组把元素添加到集合中去,最后在用集合的Contains()方法判断集合中有没有那个元素,代码:
int[] a = { 1, 3, 4, 5, 6, 7, 8, 10 };
List<int> list = new List<int>();
foreach (int i in a)
{
list.Add(i);
}
if (!list.Contains(2))
{
Console.WriteLine("数组中缺少2");
}
Console.ReadKey();
追问
没看清题意,缺少的数是一个1-10的随机数,并且不一定缺少一个,也许是两个,三个...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果我没有理解错的话,这道题目有个假设: 一个数组里存放了1-10里面的数字, N (1<=N<=10)最多只出现一次. 需要解决的问题是找出所有没有出现在这个数组中的M(1<=M<=10).
解法一: 两层遍历, o(N*N)
for(int value = 1; value <=10; value ++)
{
bool isFound = false;
for(int index = 0; index < a.Length; a ++)
{
if(a[index] == value)
{
isFound = true;
break;
}
}
if(isFound!)
{
Print(value;);
}
}
解法2:设辅助数组 bool[] flags = new bool[11] {}; - o(n)
for(int index = 0 ; index < a.Length; index++)
{
flags[a[index]] = true;
}
for(int index = 1 ; index < flags.Length; index ++)
{
if(!flags[index])
{
Print(index);
}
}
如果需求理解错了,请告知我。
解法一: 两层遍历, o(N*N)
for(int value = 1; value <=10; value ++)
{
bool isFound = false;
for(int index = 0; index < a.Length; a ++)
{
if(a[index] == value)
{
isFound = true;
break;
}
}
if(isFound!)
{
Print(value;);
}
}
解法2:设辅助数组 bool[] flags = new bool[11] {}; - o(n)
for(int index = 0 ; index < a.Length; index++)
{
flags[a[index]] = true;
}
for(int index = 1 ; index < flags.Length; index ++)
{
if(!flags[index])
{
Print(index);
}
}
如果需求理解错了,请告知我。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
hi jinwb,
最容易想到的是利用循环来判断。比如for和foreach循环。
最容易想到的是利用循环来判断。比如for和foreach循环。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询