java语言基础

qq_30846141 2015-08-25 10:14:47
2.删除数组中的第3个元素
int[] arr = {2,6,8,4,5,7};
最后数组元素: 2,6,4,5,7
提示:1)将要删除的元素放在最后一个位置
2)缩容


求各位好心人解答
...全文
79 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cabbage_gang 2015-08-26
  • 打赏
  • 举报
回复
人家都给提示了嘛!~ 先把目标数字和最终数字交换 得到的数组就是目标数字在末尾咯!~ 然后把数组复制一下 少一位就行咯!~ 要求恢复排序的话再把目标位置(也就是刚才末尾的那个数字)放到最后去咯!~ 还有一个方案 把目标数字的值换成数组所有数字之和+1,这样就确保它的唯一性。缺点,数字太大了就不好了,弄不好int存不下了!哈哈哈! 然后给个长度-1的新数组,把之前的数组放进去,中间做个if判断如果值等于之前给目标的值跳过该次赋值操作 int[] arr = {2,6,8,4,5,7}; int sun=0; for(int i = 0;i<arr.length;i++){ sum+=arr[i]; } sum+=1; arr[2] = sum; int[] arr2 = new int[arr.length-1]; for(int i = 0,j=0;i<arr.length;i++){ if(arr[i]==sum){continue;} arr2[j]=arr[i]; j++; } 当你敲完这段代码以后呢 就会发现 还有更简单的 复制的时候到第三个跳过就行了嘛!~主要就是循环中i和j的使用,i是用来遍历原数组的,j是用来为新数组赋值的,所以,i的递增是每循环一次,j的递增是每次给数组2插入数据后! int[] arr = {2,6,8,4,5,7}; int[] arr2 = new int[arr.length-1]; for(int i = 0,j=0;i<arr.length;i++){ if(i==2){continue;} arr2[j]=arr[i]; j++; } 所以,有时候别总是绕着人家给的提示,或许出题人没你聪明呢!
fudapeng7 2015-08-26
  • 打赏
  • 举报
回复


public int[] remove(int[] a,int i)
{     
       //被删除数挪到最后
        int num=a[i];
        for(i;i<a.length-2;i++)
        {
             a[i]=a[i+1];
        }
     //缩容
     int[] b = new b[a.length-1];
     for(int j=0;j<a.length-2;j++)
     {
        b[j]=a[j];
     }
     return b;
}

oridark 2015-08-26
  • 打赏
  • 举报
回复
说一个大概的过程,具体代码比较好实现,不过感觉我的思路代码很麻烦,期待大神给简单的思路。 首先,找到该元素的位置; 其次,将该位置后的元素依次赋值给前一个位置; 最后数组的最后一项赋值为空或者某一特定值,或者干脆新建一个长度减一的数组复制过去。

50,336

社区成员

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

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