java数组删除元素,不要引进新的存储空间

chenshan19870108 2011-10-20 04:54:47
要求在原数组上进行删除,不可以引进新的存储结构。以免内存消耗过度
...全文
1201 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenshan19870108 2011-10-21
  • 打赏
  • 举报
回复
恩,我实际也是这么处理的,记录了删除元素的个数,最后对数组进行截取
Jobernowl 2011-10-21
  • 打赏
  • 举报
回复
这个太简单了 ArrayList删除源码上有
Antineutrino 2011-10-21
  • 打赏
  • 举报
回复
这种情况使用链表更合适,如果必须使用数组,就要用一个计数器来跟踪数组有效部分的长度。
分两种情况:
1. 删除后仍保持原来的相对顺序
2. 元素的顺序无所谓

第一种情况,删除一个元素时,必须将它后面的所有元素向前挪一个位置
第二种情况,可以直接用最后的元素代替被删除的元素

删除一个元素之后,更新计数器就可以了。
Scott11Zhan 2011-10-21
  • 打赏
  • 举报
回复
arr[n] = 0;
wanquan812 2011-10-21
  • 打赏
  • 举报
回复
你可以覆盖 然后把数组后面的值前移 不过数组最后面的值会是null 或者0
孟祥月 2011-10-20
  • 打赏
  • 举报
回复
看来挺复杂的啊
chenshan19870108 2011-10-20
  • 打赏
  • 举报
回复
我是把删除的覆盖了,当然最后的多余元素不用管
chenshan19870108 2011-10-20
  • 打赏
  • 举报
回复
大家看看我的做法,给给意见
public class TestCompare {
private Integer[] nums = {1,1,1,1,1,1,1,1,2,2,3,3,4,5,6,7,8,9};
private int deleNums = 0;
public static void main(String[] args) {
TestCompare tc = new TestCompare();
tc.test();
}
public void test() {
int begin= 0;
int i=begin;
while(i<nums.length-1) {
i++;
if(nums[begin]!=nums[i]){
nums[i-deleNums] = nums[i];
begin = i-deleNums;
}else {
deleNums++;
}
}


for(int j=0;j<nums.length;j++)
System.out.println(nums[j]);
}

}
lhjtianji 2011-10-20
  • 打赏
  • 举报
回复
这个问题以前在学校的时候,当时解决的办法是用的链串
zhang99092 2011-10-20
  • 打赏
  • 举报
回复
把数组元素引用值至为空行不行
yiranwuyu 2011-10-20
  • 打赏
  • 举报
回复
谁知数组中你想删除的元素为空
shine333 2011-10-20
  • 打赏
  • 举报
回复
我现在的数组是{-1,0,1,2},请问,删除2以后变成什么??
{-1,0,1}需要新的空间
{-1,0,1,X},请问,X应是什么,才能区分这个位置已经删除
chenshan19870108 2011-10-20
  • 打赏
  • 举报
回复
例如删除一个数组中的重复元素,类似于SQL里面的distinct方法的功能
Antineutrino 2011-10-20
  • 打赏
  • 举报
回复
嗯,要描述清楚问题
shine333 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 chenshan19870108 的回复:]
要求在原数组上进行删除,不可以引进新的存储结构。以免内存消耗过度
[/Quote]

原来数组长度10,删除了一个变成9个元素,问,现在的数组长度是多少?
1,长度变成9,那必然需要新的空间
2,长度还是10,那怎么区分被删除的部分?
chenshan19870108 2011-10-20
  • 打赏
  • 举报
回复
那会不会新建内存呢 是要按始末位置进行复制吗 这个操作对于大量数据呢
bohe_198878 2011-10-20
  • 打赏
  • 举报
回复
那就用数组的复制好了
chenshan19870108 2011-10-20
  • 打赏
  • 举报
回复
求高手解答,谢谢了

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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