1. What is it?
For example, if there is an 11 * 11 backgammon board, and we want to use a program to simulate it, it must be a two-dimensional array. Then use 1 to represent black stones and 2 to represent white stones. If there is only one black stone and one white stone on the chessboard, then there is only one 1 and one 2 in this two-dimensional array, and the others are meaningless 0s that do not represent any chess pieces, as follows:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ……
When most of the elements in an array are 0, or have the same value, you can use a sparse array to save the array. Why do this? Because it saves space.
2. How to use?
Record how many rows and columns the original array has and how many different values it has
Put the rows and columns of elements with different values and values are recorded in a small-scale array, this small-scale array is called a sparse array
3. Case:
The current situation is as follows The original array of 6 * 7:
0 0 0 22 0 0 15 0 11 0 0 0 17 0 0 0 0 -6 0 0 0 0 0 0 0 0 39 0 91 0 0 0 0 0 0 0 0 28 0 0 0 0
First, the first row and the first column of the sparse array are to record how many rows the element array has. The first row and the second column are to record how many columns the original array is. The first row and the first column are The three columns record how many different values the original array has (except 0). So one row of the sparse array should be:
行 列 值 6 7 8
Starting from the second row of the sparse array, each row records the row, column, and value size of the non-0 value in the original array. For example, if the second line is to record the row, column, and value of 22 in the original array, then the second line of the sparse array is:
行 列 值 0 3 22
Then use this method to record 15, 11, 17, -6, 39, 91 , 28 related information, so the sparse array finally converted from the original array is:
行 列 值 6 7 8 0 3 22 0 6 15 1 1 11 1 5 17 2 3 -6 3 5 39 4 0 91 5 2 28
This turns a 6 * 7 array into a 9 * 3 array, achieving the compression effect .
4. Ideas for converting original arrays and sparse arrays:
Convert original arrays to sparse arrays:
Traverse two dimensions The array gets the number of valid arrays count;
You can create a sparse array based on count
int[count 1][3]
;Save the valid array into a sparse array
Convert sparse array to original Array:
Read the first row of the sparse array. Based on the first row of the array, you can know how many rows and columns the original array has, and then create the original array;
Read the array of several rows after the sparse array and assign it to the original array
##5. Code practice:
public class SparseArray { public static void main(String[] args){ // 创建一个 11 * 11的原始数组 int[][] arr1 = new int[11][11]; arr1[1][2] = 1; arr1[2][3] = 2; // 原始数组转稀疏数组 // 1. 遍历,得到非0数据的个数以及所在的行列 int count = 0; Map<string> map = new HashMap(); for (int i = 0; i The above code realizes the mutual conversion between original array and sparse array. Flexible use of sparse array can save running memory and improve program performance. <p></p></string>
The above is the detailed content of How to convert original array to sparse array in java. For more information, please follow other related articles on the PHP Chinese website!

Javaremainsagoodlanguageduetoitscontinuousevolutionandrobustecosystem.1)Lambdaexpressionsenhancecodereadabilityandenablefunctionalprogramming.2)Streamsallowforefficientdataprocessing,particularlywithlargedatasets.3)ThemodularsystemintroducedinJava9im

Javaisgreatduetoitsplatformindependence,robustOOPsupport,extensivelibraries,andstrongcommunity.1)PlatformindependenceviaJVMallowscodetorunonvariousplatforms.2)OOPfeatureslikeencapsulation,inheritance,andpolymorphismenablemodularandscalablecode.3)Rich

The five major features of Java are polymorphism, Lambda expressions, StreamsAPI, generics and exception handling. 1. Polymorphism allows objects of different classes to be used as objects of common base classes. 2. Lambda expressions make the code more concise, especially suitable for handling collections and streams. 3.StreamsAPI efficiently processes large data sets and supports declarative operations. 4. Generics provide type safety and reusability, and type errors are caught during compilation. 5. Exception handling helps handle errors elegantly and write reliable software.

Java'stopfeaturessignificantlyenhanceitsperformanceandscalability.1)Object-orientedprincipleslikepolymorphismenableflexibleandscalablecode.2)Garbagecollectionautomatesmemorymanagementbutcancauselatencyissues.3)TheJITcompilerboostsexecutionspeedafteri

The core components of the JVM include ClassLoader, RuntimeDataArea and ExecutionEngine. 1) ClassLoader is responsible for loading, linking and initializing classes and interfaces. 2) RuntimeDataArea contains MethodArea, Heap, Stack, PCRegister and NativeMethodStacks. 3) ExecutionEngine is composed of Interpreter, JITCompiler and GarbageCollector, responsible for the execution and optimization of bytecode.

Java'ssafetyandsecurityarebolsteredby:1)strongtyping,whichpreventstype-relatederrors;2)automaticmemorymanagementviagarbagecollection,reducingmemory-relatedvulnerabilities;3)sandboxing,isolatingcodefromthesystem;and4)robustexceptionhandling,ensuringgr

Javaoffersseveralkeyfeaturesthatenhancecodingskills:1)Object-orientedprogrammingallowsmodelingreal-worldentities,exemplifiedbypolymorphism.2)Exceptionhandlingprovidesrobusterrormanagement.3)Lambdaexpressionssimplifyoperations,improvingcodereadability

TheJVMisacrucialcomponentthatrunsJavacodebytranslatingitintomachine-specificinstructions,impactingperformance,security,andportability.1)TheClassLoaderloads,links,andinitializesclasses.2)TheExecutionEngineexecutesbytecodeintomachineinstructions.3)Memo


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 English version
Recommended: Win version, supports code prompts!

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

Notepad++7.3.1
Easy-to-use and free code editor

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool
