帮你从算法的角度来认识数组------(一)
一、引言这个系列我会把每个知识点从基础认识、基本操作、使用场景以及相应leetcode基础练习来展开方便大家模块化的进行学习以及刷题二、基础认识数组在连续内存空间中存储一组相同类型的元素每个元素都会有对应下标三、基本操作1.创建数组有四种方法int[] arr1{1,2,3} //已知元素、已知长度int[] arr2new int[]{1,2,3} //已知元素、已知长度int[] arr3new int[3] //未知元素、已知长度ArrayListInteger arr4new ArrayList() //未知元素、未知长度注意前三种是静态长度第四种是动态长度具体区别如下对比维度前三种基本数组int[]第四种ArrayListInteger长度特性长度一旦定义就固定不变静态长度长度自动扩容 / 缩容动态长度元素初始化未显式赋值时基本类型int默认值为0未添加元素时为空无默认值元素操作只能通过下标访问 / 修改增删元素需手动重构数组提供add()/remove()/get()/set()等便捷方法存储类型只能存基本数据类型如 int或引用类型只能存引用类型需用包装类如Integer内存分配连续的内存块访问速度极快底层基于数组实现但扩容时会重新分配内存2.添加元素基于ArrayList的添加元素方法arr.add(元素值) //在末尾直接添加本质是先检查底层数组是否有剩余容量有则直接放入 元素无则先扩容新建更大的数组复制原数据,再放入新元素O(1)arr.add(位置元素值) //在指定位置添加元素原索引及之后的元素会集体向后移动一位 质还是和尾部添加一样不足则扩容O(n)3.访问元素原生数组arr[索引]ArrayListarr.get(索引) //底层仍是数组访问4.更新元素原生数组arr[索引] 新值ArrayListarr.set(索引新值)5.删除元素原生数组无现成方法需手动重构新数组ArrayListarr.remove(索引值)6.数组长度原生数组a.lengthArrayListarr.size()7.遍历数组for循环8.查找元素原生数组for循环里写if判断手动遍历ArrayListarr.contains(元素) //返回true/false四、使用场景适合读不适合写读多写少五、力扣基础练习485、283、27详细代码以及讲解会在之后更新注意在写这三道算法题之前要先把上面提到的八大操作练习一遍不要觉得很简单不用练习什么都是从0开始的慢慢就会越来越熟练六、小舟有话说这个系列也会一直更下去知道把基础的数据结构讲完大家可以关注一下哦下回找我不迷路~
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2435592.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!