首页 / 面试 / java面试基础算法之稀疏数组
java面试基础算法之稀疏数组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java面试基础算法之稀疏数组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2408字,纯文字阅读大概需要4分钟。
内容图文
因最近准备跳槽,所以自己开始准备面试相关的内容。算是自己的准备面试的随记吧!
一、稀疏数组介绍
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。
稀疏数组的处理方法是:
1) 记录数组 一共有几行几列,有多少个不同的值
2) 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而 缩小程序的规模
稀疏数组的特点:
1)第一行存的是原二维数组的行数列数以及有效数据的个数;
2) 剩下的行分别存储原二维数组中有效数据的行下标以及列下标以及数值;
二、稀疏数组的代码实现
二维数组转稀疏数组的思路:
1.遍历原始数组,得到有效数据的个数 可以定义为 sum;
2.根据有效数据的个数sum 创建稀疏数组,稀疏数组也是一个二维数组,行数:sum +1 列数:固定为3;
3.将二维数组的有效数据存入稀疏数组;
具体代码实现如下:
1 public static void main(String[] args) { 2 //创建原二维数组 3 int oldArr[][] = new int[5][5]; 4 oldArr[0][1] = 10; 5 oldArr[2][3] = 42; 6 oldArr[1][2] = 14; 7 //遍历打印原二维数据 8 int [] arrTemp;//定义副本数组 9 int sum = 0;//定义有效数据个数 10 for (int i = 0; i < oldArr.length ; i++) { 11 arrTemp = oldArr[i]; 12 for (int j = 0; j < arrTemp.length ; j++) { 13 System.out.printf("%d\t", arrTemp[j]); 14 if(arrTemp[j] != 0){ 15 sum++; 16 } 17 } 18 System.out.println(); 19 } 20 21 //创建稀疏数组 22 int resArr[][] = new int[sum + 1][3]; 23 //稀疏数组第一列默认存原二维数组的行数列数以及有效数据个数 24 resArr[0][0] = 5; 25 resArr[0][1] = 5; 26 resArr[0][2] = sum; 27 int count = 1; 28 //遍历原数组给稀疏数组赋值 29 for (int i = 0; i< oldArr.length ; i++) { 30 arrTemp = oldArr[i]; 31 for (int j = 0; j < arrTemp.length ; j++) { 32 if(arrTemp[j] != 0){ 33 resArr[count][0] = i; 34 resArr[count][1] = j; 35 resArr[count][2] = arrTemp[j]; 36 count++; 37 } 38 } 39 } 40 //循环打印稀疏数组 41 System.out.println("得到稀疏数组为~~~~"); 42 for (int i = 0; i< resArr.length ;i++) { 43 arrTemp = resArr[i]; 44 System.out.printf("%d\t%d\t%d\t\n",arrTemp[0], arrTemp[1], arrTemp[2]); 45 } 46 }View Code
内容总结
以上是互联网集市为您收集整理的java面试基础算法之稀疏数组全部内容,希望文章能够帮你解决java面试基础算法之稀疏数组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。