데이터 구조 학습 (Java 버전) - 배열

일반 배열

배열 정의 :

배열은 동일한 타입의 정렬 된 집합이다. 동일한 유형의 배열은 그들이 특정 조합 순서에 따라, 데이터의 개수에 기재된. 각 배열 요소가 데이터를 호출하며, 각각의 어레이 소자는 인덱스를 통해 액세스 할 수있다 .

배열의 기본 기능 :

  1. 이 길이는 창작에서 결정되고, 수정 될 수 없다.
  2. 그 요소는 동일한 유형이어야합니다.
  3. 어느 데이터 요소들 수 있고, 염기를 포함하는 의료 형의 형태있다.
  4. 예를 들어 숫자를 배울 수에 대한 인덱스 배열은 의미를 가질 수있다.

생성과 배열을 초기화

배열을 선언

// 阿里巴巴强制规范
type[] arr_name;


type arr_name[];

배열 초기화

1. 정적 초기화

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

Man[] mans = {
new Man(1, 1);
new Man(2, 2);
};

2. 동적 초기화

int[] a = new int[2];
a[0] = 1;
a[1] = 2;

기본 초기화 3. 배열

// {0, 0}
int[] a = new int[2];
// {false, false}
boolean[] b = new boolean[2];
// {null, null}
String[] s = new String[2];

4. 배열 범위

첨자 합법적 구간 [0, 길이 1]

동적 배열

동적 배열 정의 :

    자바의 ArrayList를 동적 배열, 그리고 동적 요소의 감소를 증가 제공합니다.

동적 배열의 기본 특성 :

  1. 배열 크기가 자동으로 요소의 수에 따라 조정될 수있다.
  2. 당신은 기본 데이터 형식을 저장할 수 없습니다.

생성 및 동적 배열을 초기화

동적 배열 초기화 선언

ArrayList<type> arr_name = new ArrayList<>();

상기 어레이의 경계 : 첨자 법적 구간 [0, 크기 1]

요약 :

boolean add(E e)
          리스트의 마지막으로, 지정된 요소입니다.
 void add(int index, E element)
          리스트의 지정된 위치에 지정된 요소.
 boolean addAll(Collection<? extends E> c)
          반복자가 돌려 지정된 수집,이 목록의 꼬리 컬렉션의 모든 요소의 요소의 순서에 따라.
 boolean addAll(int index, Collection<? extends E> c)
          이 목록에 지정된 컬렉션의 모든 요소는 지정된 위치에서 시작.
 void clear()
          이 목록의 모든 요소를 ​​제거합니다.
 Object clone()
          얕은 반환 ArrayList의 인스턴스의 복사합니다.
 boolean contains(Object o)
          이 목록에 포함 된 요소를 지정하는 경우는 true를 돌려줍니다.
 void ensureCapacity(int minCapacity)
          필요한 경우, 적어도 파라미터로 지정된 요소의 수의 최소 용량을 보유 할 수 있도록, ArrayList의 인스턴스의 용량을 크게 할 수있다.
 E get(int index)
          위치에 대한리스트의 지정된 요소를 돌려줍니다.
 int indexOf(Object o)
          반환 처음 또는이 목록에 지정된 요소의 인덱스이 목록은 요소 또는 -1 포함하지 않는 경우.
 boolean isEmpty()
          이 목록에 요소는 해당하지 않는 경우
 int lastIndexOf(Object o)
          반환 마지막 항목이 목록에 지정된 요소의 인덱스, 또는이 목록 인덱스를 포함하지 않는 경우, 또는 -1.
 E remove(int index)
          이 목록에 지정된 위치에있는 요소를 제거합니다.
 boolean remove(Object o)
          처음 발생 (존재하는 경우)의 목록에서 지정된 요소를 제거한다.
protected  void removeRange(int fromIndex, int toIndex)
          (포함)가 fromIndex와 toIndex의 사이의 색인 목록의 모든 요소를 ​​제거의 (포함되지 않음).
 E set(int index, E element)
          지정된 위치의리스트 요소에 지정된 다른 요소.
 int size()
          이 목록에있는 요소의 수를 돌려줍니다.
 Object[] toArray()
          (마지막 요소에 처음부터)리스트 내의 모든 요소를 ​​포함하는 적절한 순서로 배열.
<T> T[]
toArray(T[] a)
          (마지막 요소 내지 제)에서 적절한 순서리스트의 모든 요소의 배열을 반환하고, 지정된 형식의 복귀 배열 어레이 동작의 유형 인 경우.
 void trimToSize()
          현재리스트의 사이즈의 용량 조절의 ArrayList의 인스턴스.

 

예 :

배열 : 숙박 버튼 - 질문 번호 -1313- https://leetcode-cn.com/problems/decompress-run-length-encoded-list/submissions/

 

당신에게 정수 nums의 실행 길이 인코딩 압축 목록을 제공합니다.

인접 [A, B] 각 쌍의 두 요소 고려 = [nums [2 * i]는, nums [2 * I + 1]는 (i> = 0 인 경우), 각 쌍의 후방 신장을 나타낼 B 원소의 값.

압축 해제 후 목록으로 돌아하시기 바랍니다.

예 :

입력 : nums가 = [1,2,3,4]
출력은 [2,4,4,4]
설명 : 첫 번째 쌍은 [1,2] 배열 [2]를 생성하기 위해, 발생 (2)의 빈도는 1이다.
두 번째 쌍 [3,4]는 어레이 [4,4,4-]를 생성하기 위해, (4)의 발생 빈도가 3이다.
마지막으로 서로 직렬로 [2] + [4,4,4,4] = [2,4,4,4]이다.

팁 :

2 <= nums.length <= 100
nums.length % 2 == 0
1 <= nums[i] <= 100

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/decompress-run-length-encoded-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

(这里注意下,实际上这种方式很麻烦,只是为了写一个数组应用的例子)

class Solution {
    public int[] decompressRLElist(int[] nums) {
		int size = 0;
		for (int i = 0; i < nums.length; i+=2) {
			size+=nums[i];
		}
		int[] res = new int[size];
		int pointer = 0;
		for (int i = 0; i < res.length; i+=2) {
			if(i<nums.length) {
				for (int j = 0; j < nums[i]; j++) {
					res[pointer] = nums[i+1];
					pointer++;
				}
			}
		}
        return res;
    }
}

动态数组

class Solution {
    public int[] decompressRLElist(int[] nums) {
		ArrayList<Integer> a = new ArrayList<>();
		for (int i = 0; i < nums.length; i+=2) {
			for (int j = 0; j < nums[i]; j++) {
				a.add(nums[i+1]);
			}
		}
		int[] res = new int[a.size()];
		for (int i = 0; i < a.size(); i++) {
			res[i] = a.get(i);
		}
        return res;
    }
}

 

 
发布了33 篇原创文章 · 获赞 22 · 访问量 6737

추천

출처blog.csdn.net/qq_42909053/article/details/104301726