黑马程序员技术交流社区
标题:
基础问题—数组去重的实现
[打印本页]
作者:
熵增
时间:
2018-10-9 15:01
标题:
基础问题—数组去重的实现
本帖最后由 熵增 于 2018-10-9 15:05 编辑
day05 课后习题的第十题“数组去重”的主要思想是需要将循环与判断语句结合使用。
技术路线在图片中,代码如下。
public class
Text10_1 {
public static void
main
(String[] args) {
int
[] num={
9
,
10
,
6
,
6
,
1
,
9
,
0
,
3
,
5
,
6
,
4
,
4
,
100
,
10
,
110
}
;
System.
out
.println(
"原数组:"
)
;
System.
out
.print(
"["
)
;
for
(
int
i=
0
;
i<num.
length
;
i++)
{
if
(i<num.
length
-
1
)
{
System.
out
.print(num
+
","
)
;
}
else
System.
out
.println(num
+
"]"
)
;
}
//建立新的中间数组mid[num.length],记录num[]中出现重复的值的位置。
int
[] mid=
new int
[num.
length
]
;
for
(
int
i=
0
;
i<num.
length
-
1
;
i++)
{
for
(
int
j=i+
1
;
j<num.
length
;
j++)
if
(num
==num[j])
//在num[]数组中,如果下标i位置处的值和下标j处的值相同,
{
// 则在mid[j]处计作1,这样在mid[]数组中值为1的元素的下标就是num[]出现重复值的下标
mid[j]=
1
;
}
}
//建立新数组newNum[lengthNum],将num[]中不重复的值赋给它midTwo[]。
int
lengthNum=
0
;
for
(
int
i=
0
;
i<num.
length
;
i++)
{
if
(mid
==
0
){++lengthNum
;
}
//确定lengthNum的数值即新数组newNum[]的长度
}
int
[] newNum=
new int
[lengthNum]
;
for
(
int
j=
0
,
i=
0
;
i<num.
length
;
i++)
//通过mid[]的重复值位置信息,将num[]剔除重复值赋值给newNum[]
{
if
(mid
!=
1
)
{
newNum [j]=num
;
j++
;
}
}
System.
out
.println(
"跳过重复值打印:"
)
;
for
(
int
i=
0
;
i<num.
length
;
i++)
{
if
(mid
!=
1
)System.
out
.print(num
+
" "
)
;
//跳过num[]中的重复值打印
}
System.
out
.println()
;
System.
out
.println(
"========================================="
)
;
System.
out
.println(
"剔除重复值后的新数组:"
)
;
System.
out
.print(
"["
)
;
for
(
int
i=
0
;
i<lengthNum
;
i++)
{
if
(i<lengthNum-
1
)
{
System.
out
.print(newNum
+
","
)
;
//打印剔除重复值后的newnum[]数组
}
else
System.
out
.println(newNum
+
"]"
)
;
}
}
}
绘图1.jpg
(377.38 KB, 下载次数: 0)
下载附件
2018-10-9 14:59 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2