java - 删除数组元素后如何将元素向左移动?
问题描述
我被要求在(lets say k=30)
不使用内置方法的情况下从数组中删除元素并将其他元素移到左侧。
我尝试了以下方法。
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = new int[] { 1, 2, 30, 4, 5, 30, 6 };
int k = 30;
int count = 0;
System.out.println("---Original Array------");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
for (int i = 0; i < arr.length; i++) {
if (arr[i] == k)
count++;
}
for (int j = 0; j < count; j++) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == k) {
for (int l = i; l < arr.length - 1; l++) {
arr[l] = arr[l + 1];
}
}
}
}
System.out.println("---Modified Array------");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
我需要这样的输出:[1 2 4 5 6 0 0]
但上述逻辑的输出是:[1 2 4 5 6 6 6]
另外,我担心在这里使用嵌套的 for 循环。有什么方法可以在不使用任何内置方法的情况下降低时间复杂度?
解决方案
这是另一个变体:
int[] arr = new int[] { 1, 2, 30, 4, 5, 30, 6 };
int k = 30;
int j = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] != k) {
arr[j++] = arr[i];
}
}
while (j < arr.length) {
arr[j++] = 0;
}
推荐阅读
- python - 如何在没有登录表单页面(弹出登录)的情况下进行现场授权?
- sails.js - .exec(function (err, result)) 的结果未显示结果,尽管已将条目写入数据库
- mysql - Laravel 5 - 将 MySQL 数据从 Dev 传输到 Staging/Production
- javafx - Java FX application.css 更改单选按钮/复选框内的文本
- javascript - 从上一页的输入值中显示/隐藏 div id
- yii2 - yii2 mailer 邮件未发送
- python - Python Regex - 如果捕获组不包含特定字符则匹配
- django - 上传文件后multivaluedictkeyerror
- javascript - 如何让 React Component 在每次状态更改时调用一个函数?
- elasticsearch - 在正则表达式查询中使用空格时没有结果