精华内容
下载资源
问答
  • 2021-05-27 16:22:38

    问题:

    长度n的顺序表L,时间复O(n),空间复O(i),删除所有值为x的元素

    void delete_x(SqList * L, ElemType x){
        int k = 0;
        for(int i = 0; i<L->length; i++){
            if(L->data[i] == x){
                k++;
            }else{
                L->data[i-k] = L->data[i];
            }
        }
        L->length -= k;
    }
    
    更多相关内容
  • 数组中某个值删除,并返回新数组,需要遍历旧数组找到要删除元素 代码如下: /* * 删除数组中指定 */ Array.prototype.remove=function(value){ var len = this.length; for(var i=0,n=0;i<len;i++){//把出...
  • 【算法】【数组删除数组中所有值为x的数据元素题目算法一算法二算法三 题目 删除数组中所有值为x的数据元素 算法一 思路:统计不等于x的个数 时间复杂度:O(n)O(n)O(n) 空间复杂度:O(1)O(1)O(1) //算法一:...

    学而不思则罔,思而不学则殆

    【算法】【数组】删除数组中所有值为x的数据元素


    题目

    删除数组中所有值为x的数据元素

    算法一

    思路:统计不等于x的个数
    时间复杂度: O ( n ) O(n) O(n)
    空间复杂度: O ( 1 ) O(1) O(1)

        //算法一:统计不等于x的个数
        private static void del_x_1(int[] ints, int delete) {
            int k = 0;
            for (int anInt : ints) {
                if (delete != anInt) {
                    ints[k++] = anInt;
                }
            }
            //k表示不等delete的个数
            //[k,ints.length-1] 置为-1
            for (int index = k; index < ints.length; index++) {
                ints[index] = -1;
            }
        }
    

    算法二

    思路:统计等于x的个数
    时间复杂度: O ( n ) O(n) O(n)
    空间复杂度: O ( 1 ) O(1) O(1)

        //算法二:统计等于x的个数
        private static void del_x_2(int[] ints, int delete) {
            //delete出现的次数
            int deleteNum = 0;
            for (int i = 0; i < ints.length; i++) {
                int tmp = ints[i];
                if (delete == tmp) {
                    deleteNum++;
                } else {
                    ints[i - deleteNum] = tmp;//当前元素前移deleteNum个位置
                }
            }
    
            //k表示不等delete的个数
            //[k,ints.length-1] 置为-1
            for (int index = ints.length - deleteNum; index < ints.length; index++) {
                ints[index] = -1;
            }
        }
    

    算法三

    思路:双指针法
    时间复杂度: O ( n ) O(n) O(n)
    空间复杂度: O ( 1 ) O(1) O(1)

        //算法三:双指针法
        private static void del_x_3(int[] ints, int delete) {
            int lowIndex = 0;
            int fastIndex = 0;
    
            for (int anInt : ints) {
                if (anInt == delete) {
                    fastIndex++;//跳过delete
                } else {
                    ints[lowIndex++] = ints[fastIndex++];
                }
            }
            for (int i = lowIndex; i < ints.length; i++) {
                ints[i] = -1;
            }
        }
    
    展开全文
  • // 从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素数组首端移动。注意,CompactIntegers函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作执行后数组...
    //		从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动。注意,CompactIntegers函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。输出删除后数组中元素的个数并依次输出数组元素。
    //		样例输入: (输入格式说明:5为输入数据的个数,3 4 0 0 2 是以空格隔开的5个整数)
    //		5
    //		3 4 0 0 2
    //		样例输出:(输出格式说明:3为非零数据的个数,3 4 2 是以空格隔开的3个非零整数)
    //		3
    //		3 4 2
    //		样例输入:
    //		7
    //		0 0 7 0 0 9 0
    //		样例输出:
    //		2
    //		7 9
    //		样例输入:
    //		3
    //		0 0 0
    //		样例输出:
    //		0
    		
    		Scanner sc=new Scanner(System.in);
    		int a[]=new int[sc.nextInt()];
    		for (int i = 0; i < a.length; i++) {
    			a[i]=sc.nextInt();
    		}
    		int b[]= compactIntegers(a,a.length);
    		System.out.println(b.length);
    		for (int temp:b) {
    			System.out.print(temp+" ");
    		}
    
    	}
    	public static int[] compactIntegers(int a[],int n) {
    		for (int i = 0; i < a.length; i++) {
    			if (a[i]==0) {
    				n--;
    			}
    			
    		}
    		int temp[]=new int[n];
    		int count=0;
    		for (int i = 0; i < a.length; i++) {
    			if (a[i]!=0) {
    				temp[count]=a[i];
    				count++;
    			}
    		}
    		return temp;
    
    展开全文
  • 具体要求是这样的,通过键盘向程序输入数组中需要删除的数字,程序接到输入后删除数组中所有需要删除的数字。例如: 数组 a[10]={1,2,4,6,4,8,6,2,6,7} 删除数字 :6 输出结果:1 2 4 4 8 2 7 想要实现这个功能,其...

    具体要求是这样的,通过键盘向程序输入数组中需要删除的数字,程序接到输入后删除数组中所有需要删除的数字。例如:

    数组 a[10]={1,2,4,6,4,8,6,2,6,7}
    删除数字 :6 
    输出结果:1 2 4 4 8 2 7
    

    想要实现这个功能,其基本思想其实很简单:检索数组,如果遇到与输入值相同的元素,则删除该元素。至于删除数组中的元素,就只需要把数组从中断处挨个往前移一位就好了。

    但数组中要是出现多个相同的数字,就需要我们进行进一步的考虑了,元素的下标问题。
    思路如下:
    首先使用for循环对数组进行遍历,当遇到数组元素与需要删除的数字相同时,从该处起,将下标+1.假设我们输入的数字为:6,用for循环的变量i来遍历数组,则情况如下:

    输入:x 为 6
    下标  0 1 2 3 4 5 6 7 8 9     
    元素  1 2 4 6 4 8 6 2 6 7
    
    当i = 3 时,x = a[i] = 6,则数组a[10]从下标3开始,依次+1直到a[8](数组中第九个元素),即:
    
    下标  0 1 2 3 4 5 6 7 8 | 9     i = 3
    元素  1 2 4 4 8 6 2 6 7 | 7
    

    可以看见数组中第一个6已经消失了,因为数组最高下标就是a[9],所以a[9] 不能再+1,因此我们的+1操作最多只加到a[8].
    因为 a[9] 的值已经赋给了 a[8],所以a[9] 已经可以舍去(否则就会重复),所以目前数组中有效部分是a[0]-a[8]九个元素。

    当i = 5 时,x = a[i] = 6,则数组a[10]从下标5开始,依次+1直到a[7](数组中第八个元素),即:
    
    下标  0 1 2 3 4 5 6 7 | 8 9     i = 5
    元素  1 2 4 4 8 2 6 7 | 7 7
    

    数组中第二个6也消失了,数组的有效部分为a[0]-a[7]八个元素。

    当i = 6 时,x = a[i] = 6,则数组a[10]从下标6开始,依次+1直到a[6](数组中第七个元素),即:
    
    下标  0 1 2 3 4 5 6 | 7 8 9     i = 6
    元素  1 2 4 4 8 2 7 | 7 7 7
    

    至此,数组中的所有的6都已经被删除了,留下了从 a[0]到a[6] 七个有效元素。
    因此我们打印时只需要打印前面7位就可以了,不难看见,减去的这几位正好是 “6” 出现的次数,因此我们只需要再设置一个标记,每次要求删除的数字出现时就自+1,最后输出时用数组长度减去这个标记数字,就能把有效的元素全部输出了。

    转换成代码就是:

    #include<stdio.h>
    #include<string.h>
    int main()
    { 
    	int n,sum=0; //设置标记统计被删除数字的出现次数
    	int a[10]={1,2,4,6,4,8,6,2,6,7};
    	printf("\nthe array is:");
    	for(int i=0;i<10;i++)
    	{
    		
    		printf("%d",a[i]);   //遍历数组
    	}
    	printf("\nplease insert a number:");
    	scanf("%d",&n);
    	for(int i= 0;i<10;i++)
    	{
    		if(n==a[i])
    		{	
    			++sum;  //如出现,则下标自加1
    			for(int j=i;j<10-sum;j++) //仅对有效部分元素进行自加
    			{
    				a[j]=a[j+1]; 
    			}
    		}
    	}
    	printf("the answer  is :\n");
    	for(int i=0;i<10-sum;i++)  //仅输出有效部分
    	{
    		
    		printf("%d",a[i]);
    	}
    }
    

    这样就完成了。一开始做这个例子的时候总是输出不正确,后面自己按照程序运行过程写了一下就搞清楚了。所以有时候大家要是不知道为什么会出现莫名其妙的结果时,不妨试着自己画画图,很多就是就是一个数字的差别。

    运行结果

    虽然这个例题很简单,但我觉得要是把其中的细节弄明白,对我们以后的编程也是很有好处的,至少我觉得又提升了一些对程序的理解。细节决定成败,大家加油!

    展开全文
  • 从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素数组首端移动。注意,CompactIntegers函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的...
  • 实现数组删除所有的x元素 void DeleteAllX(SqList &l, int x){ int k=0; //记录数组中与x相等的元素的个数 for(int i=0; i<l.length; i++){ if(l.data[i] == x) k++; //如果当前元素等于x,则...
  • js删除Array数组中指定元素 方法一, /* * 方法:Array.remove(dx) 通过遍历,重构数组 * 功能:删除数组元素. * 参数:dx删除元素的下标. */ Array.prototype.remove=function(dx) { if(isNaN(dx)||dx>this.length){...
  • 删除指定元素或指定
  • 已知长度为n的线性表采用顺序结构,设计...已知长度为n数组,设计算法,保证时间复杂度O(n),空间复杂度O(1)的算法,删除数组中元素值为item的数据元素。 #include<stdio.h> void Delete(int a[],in...
  • java删除数组中的某一个元素的方法

    千次阅读 2021-02-12 23:26:32
    实例如下:package org.company.project.test;...public class ArraysDelete { public static void main(String[] args) {//删除数组中的某一个元素的方法://把最后一个元素替代指定的元素,然后数组缩容Scann...
  • 主要介绍了js数组中如何随机取出一个,需要的朋友可以参考下
  • 一维数组删除所有值为y的元素,并返回剩余元素个数。 函数接口定义: int fun(int bb[],int y) ; 其中bb是传入的数组。 y是bb数组中删除元素 。函数带回剩余元素的个数返回主函数。 裁判测试程序样例...
  • 删除数组中值k的所有元素 算法设计思路: 需要查找数组中所有元素,所以我们从空间复杂度评价算法的优劣: 设置相同元素的个数计数变量,num即相同元素出现的次数,初始值为0,因为数组是顺序表,每个元素需要...
  • 设计算法,在数组r[n]中删除所有元素值为x的元素,要求时间复杂度O(n),空间复杂度O(1)。 1、思路 我们遍历整个原数组,当原数组等于x时,我们跳过不进行处理,否则我们将该记录到新的数组中。这样我们遍历...
  • 思路:用一个新的数组来记录原数组中X的元素:边扫描边统计不X元素的个数,并将不等于X的元素依次复制到新的数组中去,最后统计的结果则为删除后新数组的长度。 #include<cstdio> #include<cstdlib...
  • JS中删除数组中元素

    千次阅读 2021-07-19 11:09:57
    前言:主要记录一下数组在js的使用问题。 一、基本操作 1、数组的创建 主要有两种方式: var arr1 = new Array(); var arr2 = [",",",","]; 2、数组赋值 arr1.push('value'); var arr1 = new Array(); var arr2 =...
  • 数组中删除一个元素的c语言代码,希望有用哦!
  • 删除数组元素

    2019-12-11 14:13:15
    从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素数组首端移动。注意,CompactIntegers函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的...
  • java数组中删除元素的操作

    千次阅读 2021-03-10 06:31:46
    本篇我们带来的是在数组中删除元素的方法:remove和索引。相信这两种概念大家都不陌生,那么结合了数组的改动后,需要在使用时注意一些事项了。下面就具体用法展开讲解。1.使用remove()方法将内部类的list类型转换...
  • 用matlab如何删除数组中的重复元素例如删除A=[1,2,3,2,1,5,1,4]的重复元素女人是水做的,男人是泥做的,李俊基李宇春都是水泥做的用matlab如何删除数组中的重复元素的方法。 如下参考: 1.打开matlab,在命令行...
  • 如何删除数组中的一个元素

    万次阅读 2018-09-17 18:10:17
    第一种:删除数组中指定位置的元素:  方法一: import java.util.Arrays; import java.util.Scanner; public class test { public static void main(String[] args) { int []n=new int[] {1,2,3}; ...
  • C语言数组——删除数组中的某个

    千次阅读 2020-12-19 00:31:22
    列表无需要设定其的长度,我们可以随机插入元素,同时元素的类型也是随意的。或许这就是面向对象语言的强大,C语言做面向过程的语言自然没有如同Python一般强大的功能。学习C语言不会指针和结构体确实玩不出什么...
  • 6-9删除数组中的0元素

    2021-05-04 19:40:15
    编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素数组首端移动。注意,CompactIntegers函数需要接收数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。 输入时首先读入数组...
  • 删除数组中的重复元素

    千次阅读 2021-11-22 10:19:12
    首先输入数组大小,输入格式"%d",然后依次输入数组中元素,输入格式“%d”,依次输出删除重复元素后的数组中的每个元素,输出格式“%d ” 输入样例: 14 1 2 3 4 5 6 1 7 5 0 4 9 8 1 输出样例: 2 3 6 7 ...
  • 有1个包含N个整数的数组A,定义1个数组的美丽为数组中所有不同整数的和。求数组A的所有连续子序列的美丽之和。
  • [java]删除数组中的某一个元素

    千次阅读 2021-03-05 21:57:15
    package org.company.project.test;...public class ArraysDelete { public static void main(String[] args) {//删除数组中的某一个元素的方法://把最后一个元素替代指定的元素,然后数组缩容Scanner sc...
  • 删除数组中下标为n元素

    千次阅读 2013-02-20 16:45:23
    无标题文档 ... if(n > arr.length-1 || n ){ alert('没有找到下标'+n+'的元素!'); return;}//如果n大于或小于指定数组的长度则返回 var arr1 = []; for(var i = 0; i ; i++) { if(i =
  • C语言中删除数组中某个元素的方法

    千次阅读 2021-05-18 12:10:37
    C语言中删除数组中某个元素的方法发布时间:2020-06-17 14:22:39来源:亿速云阅读:1964作者:鸽子C语言实现删除数组中某个元素大家知道C语言实现删除数组中某个元素方法吗?下面将讲述在C语言实现删除数组中某个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 360,796
精华内容 144,318
关键字:

删除数组中所有值为n的元素