精华内容
下载资源
问答
  • 项目中,我们经常需要根据某个特定的值删除数组中元素,怎么删除呢? 我们可以用到splice()这个方法 ----- splice的定义引用于http://www.w3school.com.cn/jsref/jsref_splice.asp 1.简单的一维数组: ...

    在项目中,我们经常需要根据某个特定的值删除数组中的元素,怎么删除呢?

    我们可以用到splice()这个方法

     

    ----- splice的定义引用于http://www.w3school.com.cn/jsref/jsref_splice.asp

    1.简单的一维数组

    var arr = [ a, b, c, d, f……]

    如上数组,想要删除b这个元素的方法:

    function delItem(item, list) {
       // 表示先获取这个元素的下标,然后从这个下标开始计算,删除长度为1的元素
       list.splice(list.indexOf(item), 1)
    }
    // 可以将‘b’和数组arr作为参数传递给函数delItem
    // 调用
    delItem(b, arr);
    // 返回的数组为:
    arr = [a, c, d, f……]

    2.包含键值对的数组:

    var arrayJson= [
      {
        "id": "1",
        "name": "jack",
        "age": "24"
      },
      {
        "id": "2",
        "name": "mack",
        "age": "25"
      },
      {
        "id": "3",
        "name": "peak",
        "age": "26"
      }
    ]

    这种数组根据某个值删除的话,想要根据一个独一无二的值(除非,你想删除比如age都为24的元素也可以),比如每个元素都不重复的id

    function deleteItem (item, list) {
      // 先遍历list里面的每一个元素,对比item与每个元素的id是否相等,再利用splice的方法删除
      for (var key in fileList) {
        if (list[key].id === item) {
          list.splice(key, 1)
        }
      }
    }
    // 例子,我想删除数组中id为2的元素
    deleteItem(2, arrayJson);
    // 即可删除arrayJson中id为2的元素

     玩玩儿,嘿嘿

    转载于:https://www.cnblogs.com/yuanxinru321/p/10825180.html

    展开全文
  • 已知个二维整型数组已初始化a[5][5]={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7},{0,1,2,3,4},{6,7,8,9,0}},请删除数组中所有等于指定值的元素删除后,各元素依次前移。 请注意,C语言二维数组的行优先方式存储。...
  • 我有个要求用户指定的某些元素之后添加给定元素删除用户指定元素.数组中的每个元素都是唯一的.样本json值看起来像[[4,5],[3,1,6,7],[34,21,55]].考虑种情况,我想在元素7之后添加2个元素12,13,结果数组看...

    我有一个可变行和列数的二维数组.数组作为JSON存储在数据库中.我有一个要求在用户指定的某些元素之后添加给定元素或删除用户指定的元素.数组中的每个元素都是唯一的.样本json值看起来像[[4,5],[3,1,6,7],[34,21,55]].考虑一种情况,我想在元素7之后添加2个元素12,13,结果数组看起来像[[4,5],[3,1,6,7,12,13],[34,21,55] ].并删除如果我给定1作为输入,结果应为[[4,5],[3,6,7,12,13],[34,21,55]].使用Gson,我解析了存储的json值到一个数组.如何用更少的时间复杂性在Java中实现它.

     

    我从数据库解析JSON数据的代码如下所示

     

    Gson gson = new GsonBuilder().create();
    if (myTemplate.getQuestionOrder() != null) {
        long[][] questionOrder = gson.fromJson(myTemplate.getQuestionOrder(), long[][].class);
    }

    最佳答案

    请尝试以下方法.

     

     

    private static void insertAfter(long[][] array, int value, long[] insertion) {
        boolean found = false;
        for (int i = 0; i < array.length; i++) {
            long[] sub = array[i];
            for (int j = 0; j < sub.length; j++) {
                if (sub[j] == value) {
                    long[] newSub = new long[sub.length + insertion.length];
                    System.arraycopy(sub, 0, newSub, 0, j + 1);
                    System.arraycopy(insertion, 0, newSub, j + 1, insertion.length);
                    System.arraycopy(sub, j + 1, newSub, j + 1 + insertion.length, sub.length - j - 1);
                    array[i] = newSub;
                    found = true;
                    break;
                }
            }
            if (found) break;
        }
    }

    用法示例:

     

    insertAfter(questionOrder, 7, new long[]{12, 13});
    System.out.println(gson.toJson(questionOrder)); 

    这将打印[[4,5],[3,1,6,7,12,13],[34,21,55]]

    要删除元素,可以使用类似但略有修改的逻辑:

     

    private static long[][] remove(long[][] array, int value) {
        boolean found = false;
        int emptyIndex = -1;
        for (int i = 0; i < array.length; i++) {
            long[] sub = array[i];
            for (int j = 0; j < sub.length; j++) {
                if (sub[j] == value) {
                    long[] newSub = new long[sub.length - 1];
                    System.arraycopy(sub, 0, newSub, 0, j);
                    System.arraycopy(sub, j + 1, newSub, j, sub.length - j - 1);
                    array[i] = newSub;
                    if (array[i].length == 0) emptyIndex = i;
                    found = true;
                    break;
                }
            }
            if (found) break;
        }
        if (emptyIndex >= 0) {
            long[][] newArray = new long[array.length - 1][];
            System.arraycopy(array, 0, newArray, 0, emptyIndex);
            System.arraycopy(array, emptyIndex + 1, newArray, emptyIndex, array.length - emptyIndex - 1);
            array = newArray;
        }
        return array.length == 0 ? null : array;
    }

    此方法将从内部数组中删除给定的项目,如果内部数组为空,则将其从外部数组中删除.它返回修改后的数组;如果为空,则返回null.

    用法示例:

     

    questionOrder = remove(questionOrder, 4);

    Inm小程序商店

     

    Inm小程序商店收录了最新,最热门的微信小程序和微信小游戏,是国内内容最丰富的集小程序游戏、小程序分发、小程序推广为一体的综合性小程序门户网站之一。


    Vultr中文网

     

    最低 $2.5/月 的VPS, 稳定, 可靠

    展开全文
  • 1110:查找特定的值时间限制: 1000 ms内存限制: 65536KB【题目描述】在一个序列(下标从1开始)查找一个给定的值,输出第一次出现的位置。【输入】第一行包含一个正整数n,表示序列中元素个数。1 ≤n≤ 10000。第二...
    c0927f21c693074e2365fb87101c4bdc.pngfba8b61ca68cca5b76bb23b5d15999ff.png1110:查找特定的值时间限制: 1000 ms    内存限制: 65536 KB

    【题目描述】

    在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。

    【输入】

    第一行包含一个正整数n,表示序列中元素个数。1 ≤n≤ 10000。

    第二行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。元素的绝对值不超过10000。

    第三行包含一个整数x,为需要查找的特定值。x的绝对值不超过10000。

    【输出】

    若序列中存在x,输出x第一次出现的下标;否则输出-1。

    【输入样例】

    5

    2 3 6 7 3

    3

    【输出样例】

    2

    说明

    主要考查一维数组的基础。

    思路分析

    n个整数中可能存在相同的数字,要找出第一个出现的数字x,应从数组的首元素开始。根据题意和为了方便写代码,首元素设置为下标1的元素,而不是下标0的元素。

    查找过程:

    a489586237b557f6551454186f45b905.gif

    声明和输入。数组a应大于10000。

    f16efbc5923bc4c52e0c8d09a954a1e1.png

    使用for循环遍历数组,从元素a[1]开始查找,只要找到就输出该位置,并退出循环结束查找。

    4a860261051109879fa5b14fc4829d4e.png

    如果找不到呢?如何判断?

    可以声明一个bool类型变量标记是否找到,或者直接使用变量i来判断。在以前的题解中曾使用过bool类型标记,现使用循环变量来判断,这种小技巧很多人都想不到。

    9282048a9ae4659125f853c9a040cc8b.png

    代码中,变量i不在循环中声明,而是在循环之前声明。

    原理:

    如果没有找到指定的值,那么变量i肯定大于变量n(这也是退出循环的条件),所以在循环之后对变量i进行判断,如果i>n,输出-1。

    问:变量i不可以写在循环中声明吗?

    答:如果变量i在循环中声明,那么变量i的作用域只在循环中有效,离开循环后变量i就被销毁。也就是说,变量i的生命周期只在循环中有效,离开循环后就会结束。

    数据类型:每个元素的值很小,所有数据可选int类型。

    源码下载

    https://pan.baidu.com/s/1ro_SmKG1NKL8_pLS6oYuKQ 

    提取码: 9uk4

    运行结果

    94ff94f011b8859b6221575f8717dc45.gif

    参考代码 - C++

    9480533dac3fed9e6ac74d14b6b2d77b.png

    END

    注:题目来源于网络,转载于《信息学奥赛一本通(C++版)在线评测系统》,点击下方的【阅读原文】即可打开该题的链接。

    题解属于本微信公众号【大神编程】原创。

    148aec6e5a9cd178dd9a7a603beaf6b3.gif

    展开全文
  • 创建数组在Java,我们可以通过[]去声明指定类型的数组:int[] a; // 写法int a[]; // 写法二当然,一般情况下我们更喜欢使用第种方式来声明数组,因为它将类型与变量名分开,优化了代码的可读性。...

    数组,一种应用非常广泛的数据结构,简单地来说就是一组类型相同无序的元素的存储在固定长度且有序**的内存空间。

    创建一个数组

    在Java中,我们可以通过[]去声明一个指定类型的数组:

    int[] a; // 写法一int a[]; // 写法二

    当然,一般情况下我们更喜欢使用第一种方式来声明一个数组,因为它将类型与变量名分开,优化了代码的可读性。 刚刚我们只是声明了一个数组a,但是并没有将a初始化为一个真正的数组。

    在给数组赋值时,我们

    可以通过三种方式:

    int[] a = new int[4];int[] a = new int[]{1,2,3,4};int[] a = {1,4,3,2}

    其中第三种实际上是第二种的简写,我们可以通过使用new关键字去创建一个匿名的数组:

    new int[4];

    但是记得一定要指定长度或者指定数组中的元素,这里如果想要创建一个匿名的数组,new关键字是必不可少的:

    {1,2,4,3} // 这样写是错误的!

    无论我们怎么去定义一个数组,它的长度在创建之初都是被确定的,但是需要注意一点,它的长度也不是无穷无尽的,我们可以通过查看反射包中的Array类源码获得它的长度数据类型:

    public static Object newInstance(Class> componentType, int length)        throws NegativeArraySizeException {        return newArray(componentType, length);}

    这里可以看到数组的数据类型是int类型,而int类型在前面我们也提过,它的最大长度是$2^{31}$,也就是2GB。

    访问数组中的元素

    我们可以通过下标的方式来访问数组中的元素,数组的下标从0开始,最大长度是数组的长度,如果我们访问超出数组下标范围的数据,就会抛出索引越界异常(ArrayOutOfIndexError),因为我们可以通过下标直接访问数组中的元素,所以时间复杂度是O(1)。

    int[] a = {1,2,3};System.out.println(a[0]); // 1

    往数组中添加元素

    刚刚我们说过,数组中的长度是固定的,所以我们无法去改变该数组的结构,但是我们可以通过另外一种方法来实现这样的效果:

    int[] arr = {9,7,5};int[] temp = new int[arr.length+1];for(int i = 0;i < arr.length;i++) { temp[i]=arr[i];}temp[arr.length] = 6;arr = temp;
    498da94f4fc644c07711ffb254f9a194.png

    删除元素

    和新增一样,删除数组中的元素同样是不允许的,我们可以通过和新增类似的方式来完成删除的操作:

    int[] arr = { 1, 2, 3, 4, 5};int[] tmp = new int[arr.length - 1];for (int i = 0; i < tmp.length; i++) {  tmp[i] = arr[i];}arr = tmp;

    原理上和新增是比较类似的,这里我就不再画图去详细的说明了

    二维数组(了解)

    我们像创建一维数组一样可以创建一个二维数组

    int[][] doubleArr = new int[2][3];int[][] doubleArr = new int[5][];

    这里需要注意一点,二维数组的创建时,可以指定一个维度的长度,而不指定第二维度的长度,使之动态的变化。比如我们可以画个星星

    String[][] arr = new String[5][];for (int i = 0; i < arr.length; i++) {  arr[i] = new String[i + 1];  for (int j = 0; j < arr[i].length;j++) {    arr[i][j] = "*";  }}for (int i = 0; i < arr.length; i++) {  for (int j = 0; j < arr[i].length;j++) {    System.out.print(arr[i][j]);  }  System.out.println();}
    ca00ec988169d9843b6be98e0d146319.png
    展开全文
  • JavaScript-数组

    2018-08-09 20:08:08
    什么是数组 数组是值的有序集合。...数组的元素可以是不同的类型可以动态的向数组差人新元素,或者删除指定元素 一维数组 定义数组 定义数组的方式有三种 /*数组字面量方式定义数组*/ var arr1 = []//空数组 var ...
  • JS(JavaScript) 数组; 一.数组是什么; 是值得有序集合,每个元素都数组里有唯一的位置,用数字表示...向插入新元素,从数组中删除指定元素 二.一维数组; 1.定义数组; 字面量/直接量方式定义var 数组名称 = [...
  • 、list列表 数组列表类型:list下标从0开始,0,1,2...二、列表增加元素stus.append()...#增stus.append('小乔') #列表末尾增加元素stus.insert(1,'秋秋') #在指定位置添加元素三、删除列表元素#删除...
  • 数组的超详细讲解

    2020-08-13 16:54:06
    数组属于最简单的数据结构,也是应用最广的...一维数组:上面的a数组 多维数组:数组的数组 数组的基本操作: Insert----指定索引位置插入一个元素 Get----返回指定索引位置的元素 Delete----删除指定索引位置的
  • 动态数组ArrayList ArrayList的大小可根据需要自动扩充,允许其中 添加、插入或移除某一范围的元素。ArrayList的下限始终为零,且始终只是一维 ...RemoveAt删除数组中指定索引处的元素; Revers
  • 数据结构面试必问题

    2018-10-22 15:25:08
    一维数组、多维数组 基操 Insert——指定索引位置插入一个元素 Get——返回指定索引位置的元素 Delete——删除指定索引位置的元素 Size——得到数组所有元素的数量  问题 寻找数组中第二...
  • 常见的数据结构

    2020-05-25 11:07:52
    一维数组 多维数组(数组的数组) 数组的基本操作: Insert——指定索引位置插入一个元素 Get——返回指定索引位置的元素 Delete——删除指定索引位置的元素 length——得到数组所有元素的数量 面试常见的数组...
  • 一、顺序表的定义和特点 顺序表是用一组地址连续的存储单元依次存储线性表的数据元素,...一维数组可以是静态分配的,也可以是动态分配的。 二、顺序表的基本操作 结构体声明 #define MaxSize 50 //线性表的最
  • * 线性顺序表 ,其是按照顺序内存进行存储,出起始和结尾以外都是一一连接的(一般都是用一维数组的形式表现) * * GetElem: 返回线性表第$index个数据元素 * ListLength: 返回线性表的长度 * LocateElem: 返回...
  • 下面是用c语言实现的线性表,顺序存储结构,是用一维数组实现的,即把第一个数据元素存到数组下标为0的位置,接着把线性表相邻的元素存储数组相邻的位置。这种顺序存储方式优点是可以快速的存取表任一位置的...
  • 初识Python-列表的使用

    2017-12-11 10:47:49
    Python的列表,类似于java的存放任意类型的的一维数组,字符串,数组等。 使用格式a=['123','aaa',345] 相关方法 1、append列表尾部追加元素 2、insert指导位置添加元素,例如a.insert(1,'aaaa'),这个意思是...
  • 顺序表

    2020-12-12 22:17:11
    对于顺序存储的长度为N的线性表,删除第一个元素和插入最后一...线性表L=(a1, a2 ,……,an )用一维数组表示,假定删除线性表任一元素的概率相同(都为1/n),则删除一个元素平均需要移动元素的个数是(n-1)/2 ...
  • LeetCode解题总结

    2018-10-09 16:02:19
    1.1 从有序数组中删除重复元素 1.2 排序数组被旋转后进行查找 1.3 寻找两个排序数组的中位数 1.4 最长连续序列 1.5 累加和 1.6 移除数组中指定值 1.7 下个排列 1.8 第n个全排列 1.9 验证数独的正确性 1.10 容纳...
  •  实例094 按指定条件在数组中检索元素 111  实例095 在数组中添加元素 112  实例096 在数组中添加个数组 113  实例097 不改变长度删除数组中元素 115  实例098 删除数组元素后改变其长度 116 4.2 ...
  • 2. 有10个数存放在一数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。以10个数用赋初值的方法在程序中给出。要找的数用scanf函数输入。 3. 找出一个...
  • javascript入门笔记

    2018-05-15 15:01:07
    Javascript,简称为 JS,是款能够运行 JS解释器/引擎 的脚本语言 JS解释器/引擎 是JS的运行环境: 1、独立安装的JS解释器 - NodeJS 2、嵌入浏览器的JS解释器 JS的发展史: 1、1992年 Nombas 开发...
  • 实例151 文本中删除指定的汉字或句子 实例152 替换指定的字符串 实例153 向字符串中添加子字符串 实例154 截取字符串中的数字 实例155 将选定字符转换成大写 实例156 将选定字符转换成小写 实例157 截取...
  • 实例151 文本中删除指定的汉字或句子 实例152 替换指定的字符串 实例153 向字符串中添加子字符串 实例154 截取字符串中的数字 实例155 将选定字符转换成大写 实例156 将选定字符转换成小写 实例157 截取...
  • 知识改变命运, 科技改变生活, 用心成就自我。 目录: 每日总结 变态青蛙跳台阶问题 小喵装进碗里 ...若某线性表最常见的操作是... 循环两列房子啊一维数组A[0.....M-1],end1指向队头元素,end2指向队尾元素...
  • 实例049 使用快速排序法对一维数组进行排序 79 实例050 使用sort方法对数组进行快速排序 81 实例051 按指定条件在数组中检索元素 82 实例052 反转数组中元素的顺序 84 实例053 使用希尔排序法对一维数组进行排序 85 ...
  • 7.1.2 一维数组元素的引用 83 7.1.3 一维数组的初始化 84 7.1.4 一维数组程序举例 84 7.2 二维数组的定义和引用 86 7.2.1 二维数组的定义 86 7.2.2 二维数组元素的引用 86 7.2.3 二维数组的初始化 87 7.2.4 二维数组...
  • php学习笔记

    2013-09-14 17:20:01
    维数组。 40 类 41 .重载 41 二.覆盖 41 三.抽象类 41 四.final 42 五.const 42 时间 42 .输出日期 42 错误处理 43 .自定义错误处理函数 43 二.触发器 43 三.异常处理 43 四.设置顶级异常...
  • 最后,读者将学习如何创建二维数组以及如何使用嵌套循环来处理它们。 第6章:分支语句和逻辑操作符 如果程序可以根据实际情况调整执行,我们就说程序能够智能地行动。本章,读者将了解到如何使用if 、if else...

空空如也

空空如也

1 2 3 4 5
收藏数 95
精华内容 38
关键字:

在一维数组中删除指定元素