在连续自然数中找缺少的数

夺命胖子 2011-04-09 12:07:18
在1-500的编号中找出缺少的数,,比如:
1,2,5,8 ,10 ~~500

需要找到 3 , 4 , 6 , 7 , 9 等。

最好是MS SQL 方式实现,

C# 程序也可以。
...全文
229 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
我姓区不姓区 2011-04-09
  • 打赏
  • 举报
回复
C#的思路与sql类似,就看你的这组数是以什么结构存储的了
我姓区不姓区 2011-04-09
  • 打赏
  • 举报
回复

create table Test
( number int)
declare @i int
set @i=1
while(@i<=500)
begin
if(@i<>3 and @i<>4 and @i <>6 and @i<>7 and @i<>9)
begin
insert into Test values(@i)
end
set @i=@i+1
end
declare @max int
declare @j int
select @max=MAX(number) from Test
set @j =1
create table Temp(t int)
while(@j<=@max)
begin
if(not exists(select 1 from Test where number=@j))
begin
insert into Temp values(@j)
end
set @j=@j+1
end
select * from Temp
drop table Temp
drop table Test

子夜__ 2011-04-09
  • 打赏
  • 举报
回复
可能有误差 思路取差集
子夜__ 2011-04-09
  • 打赏
  • 举报
回复
  protected void Page_Load(object sender, EventArgs e)
{
int Min = 0;
int Max = 500;
int count = 200;
List<int> randarray = GetRandomArray(count, Min, Max).ToList();
randarray.Sort();

Response.Write("生成的" + "<br/>");
randarray.ForEach(I => Response.Write(I.ToString() + "<br/>"));
List<int> arrayToLenght = new List<int>();
for (int i = 0; i < count; i++)
{
arrayToLenght.Add(i);
}
Response.Write("---------------------------------------------------");
arrayToLenght.Except(randarray).ToList().ForEach(I => Response.Write(I.ToString() + "<br/>"));


}
public int[] GetRandomArray(int Number, int minNum, int maxNum)
{
int j;
int[] b = new int[Number];
Random r = new Random();
for (j = 0; j < Number; j++)
{
int i = r.Next(minNum, maxNum);
int num = 0;
for (int k = 0; k < j; k++)
{
if (b[k] == i)
{
num = num + 1;
}
}
if (num == 0)
{
b[j] = i;
}
else
{
j = j - 1;
}
}
return b;
}


随便YY了个 跑一下 任务完成了 在上SQL版
夺命胖子 2011-04-09
  • 打赏
  • 举报
回复
恩,我上面的参考链接就是解决方案,思路就是9楼的,结了
hch126163 2011-04-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ojlovecd 的回复:]

SQL code

create table Test
( number int)
declare @i int
set @i=1
while(@i<=500)
begin
if(@i<>3 and @i<>4 and @i <>6 and @i<>7 and @i<>9)
begin
insert into Test values(@i)
en……
[/Quote]

+1

还可以建一张临时表 #t (id)
插入 1到500
然后 select * from #t where id not in (select id from table)
DRenTeng 2011-04-09
  • 打赏
  • 举报
回复
lz,解决了也不要忘了分享.
天下在我心 2011-04-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 pengyi_205 的回复:]
以前有人提过。。解决了,悲剧
散分吧
[/Quote]
我来接分
夺命胖子 2011-04-09
  • 打赏
  • 举报
回复

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧