删除数组中某一项并输出删除后的数组

方法一:

package delete;
import java.util.Scanner;
public class delete {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int[] num = new int[]{3,6,9,13};
System.out.print("请输入要删除的数:");
int number = input.nextInt();
boolean isFind =false;
int i;
for (i = 0; i < num.length; i++) {
if(number==num[i]){
isFind=true;
break;//找到了
}

}
if(isFind){
System.out.println("数组中有要删除的数字"+number+",在数组num的第"+(i+1)+"项,下标为"+i);
int[] nums=new int[num.length-1];//后续操作
if(i==num.length-1){
for (int j = 0; j < nums.length; j++) {
nums[j]=num[j];
}
}
else{
for (int j2 = i; j2 < num.length-1; j2++) {
num[j2]=num[j2+1];
}
for (int k = 0; k < nums.length; k++) {
nums[k]=num[k];
}
}
for (int j = 0; j < nums.length; j++) {
System.out.print(nums[j]+"\t");
}
}
else{
System.out.print("数组num中没有要删除的数"+number);//没找到
}
}
}

方法二:

package Delete;
import java.util.Scanner;
public class AnotherMethod {
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[] num={3,6,9,12,15};
System.out.println("请输入您要删除的数:");
int number =input.nextInt();
boolean isFind =false;
int i;
for (i = 0; i < num.length; i++) {
if(number==num[i]){
isFind=true;
break;
//找到了要删除的数
}
}
if(isFind){
System.out.println("您输入的要删除的数"+number+",在数组num的第"+(i+1)+"项,下标为"+i);
int[] nums=new int[num.length-1];
for (int j = 0; j < nums.length; j++) {
nums[j]=num[j];
if(j==i){
nums[j]=num[j+1];
i++;
}
}
for (int k = 0; k < nums.length; k++) {
System.out.print(nums[k]+"\t");
}
}
else{
System.out.println("您输入的数在数组num中不存在,无法删除");//没找到要删除的数
}
input.close();
}
}

总结:删除数组中某一项并输出删除后的数组这个问题需要考虑到数组的定长性,不能用集合删除某一项的方法。删除数组中某一项,分为几步:

1.输入要删除的项;

2.遍历数组查找是否存在要删除的项;

3.方法一分两种情况①:要删除的项是最后一项,将原数组中的每一项依次赋值给新数组然后输出;②:要删除的项不是最后一项,从要删除的那一项开始将后面的项依次赋值给该数组的前一项,然后把赋值后的数组每一项赋值给新数组并输出。

方法二将删除后的数组直接赋值给新数组中的每一项并输出,省去了方法一中情况②的步骤。方法二的思路是先依次赋值给新数组,等到遇到要删除的那一项通过之前找到的下标将后一项赋值给新数组的前一项就可以了,省去了代码的数量。

第一种方法思路直接容易想到,第二种方法稍微有点绕但能减少代码数量,提高执行效率。

时间: 2024-12-26 12:32:17

删除数组中某一项并输出删除后的数组的相关文章

Leetcode_删除排序数组中的重复项

Leetcode  删除排序数组中的重复项 题目: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用 额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2. 你不需要考虑数组中超出新长度后面的元素. 示例 2: 给定 nums = [0,0,1,1,1,2,2,3,3,4]

LeetCode 第26题 删除排序数组中的重复项

/*26. 删除排序数组中的重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2. 你不需要考虑数组中超出新长度后面的元素.示例 2: 给定 nums = [0,0,1,1,1,2,2,3,3,4], 函数应该返回新的

Leecode刷题之旅-C语言/python-26.删除数组中的重复项

/* * @lc app=leetcode.cn id=26 lang=c * * [26] 删除排序数组中的重复项 * * https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/description/ * * algorithms * Easy (42.77%) * Total Accepted: 89.1K * Total Submissions: 208.1K * Testcase Example: '[

每天一道面试题--删除排序数组中的重复项 II(python实现)

删除排序数组中的重复项 II 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 1: 给定 nums = [1,1,1,2,2,3], 函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 . 你不需要考虑数组中超出新长度后面的元素. 示例 2: 给定 nums = [0,0,1,1,1,1,2,3,

[leetcode] 26. 删除排序数组中的重复项

26. 删除排序数组中的重复项 一开始各种坐标变换把我绕晕了- -,恶心的水题 class Solution { public int removeDuplicates(int[] nums) { if (nums.length == 0) return 0; int j = 0; for (int i = 0; i < nums.length; i++) if (nums[i] != nums[j]) nums[++j] = nums[i]; return ++j; } } 原文地址:http

26. 删除排序数组中的重复项

26. 删除排序数组中的重复项 package com.test; import java.util.Arrays; public class Lesson026 { public static void main(String[] args) { int[] nums = {0,0,1,1,1,2,2,3,3,4}; int length = removeDuplicates(nums); System.out.println(length); } private static int rem

LeetCode:删除排序数组中的重复项||【80】

LeetCode:删除排序数组中的重复项||[80] 题目描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 1: 给定 nums = [1,1,1,2,2,3], 函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 . 你不需要考虑数组中超出新长度后面的元素. 示例 2: 给定 nums =

前端与算法 leetcode 26. 删除排序数组中的重复项

目录 # 前端与算法 leetcode 26. 删除排序数组中的重复项 题目描述 概要 提示 解析 算法 # 前端与算法 leetcode 26. 删除排序数组中的重复项 题目描述 26. 删除排序数组中的重复项 概要 一提到原地删除数组,就能立即想到双指针法,这道题本身也没什么难度,日常水题, 提示 双指针 解析 没有思路的时候,耐心一点即可 算法 /** ?*[email protected]?{number[]}?nums ?*[email protected]?{number} ?*/

通过递归使数组中没有重复项

//数组中删除值相同的项,使得数组中没有重复的项//数组自己的方法splice(a,b),在每次使用后会返回一个新的数组,因此必须使用递归得方法来使数组中相同的项删除,如果不这样就达不到这样的效果,有些项会被忽略掉//比如下面这个例子,如果不使用递归,输出的将是1,2,3,4,5,6,7,1很明显第一项和最后一项是相同的,没有达到我们预期的效果//使用递归就不存在这个问题了,输出将是1,2,3,4,5,6,7; 1 var arrzfs = [1,2,2,3,4,4,1,3,5,6,7,7,1,