일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- QA엔지니어
- 리눅스
- IntelliJ
- 벤쿠버렌트
- 파이도 환불
- 설탕문제
- binaray_gap
- 프로그래머스
- 벤쿠버 렌트
- 부산입국
- 레노보노트북
- 외래키설정
- 캐나다워홀
- 1463번
- Lesson3
- 언마운트
- 벤쿠버집구하기
- BC렌트
- Java
- Lesson2
- FLEX5
- 백준알고리즘
- codility
- 데이터의 무결성
- 자바
- FK 설정
- database연결
- Linux
- FIDO 환불
- 엔테크서비스
- Today
- Total
대충이라도 하자
Arrays -chapter3 본문
Now that we know how insertion works, it's time to look at its complement—deletion!
Deletion in an Array works in a very similar manner to insertion, and has the same three different cases:
- Deleting the last element of the Array.
- Deleting the first element of the Array.
- Deletion at any given index.
1. Deleting From the End of an Array
Deletion at the end of an Array is similar to people standing in a line, also known as a queue.
Deleting from the end of an Array is the least time consuming of the three cases.
Simply overwriting the value at a certain index deletes the element at that index.
// Declare an integer array of 10 elements.
int[] intArray = new int[10];
// The array currently contains 0 elements
int length = 0;
// Add elements at the first 6 indexes of the Array.
for(int i = 0; i < 6; i++) {
intArray[length] = i;
length++;
}
// Deletion from the end is as simple as reducing the length
// of the array by 1.
length--;
for (int i = 0; i < intArray.length; i++) {
System.out.println("Index " + i + " contains " + intArray[i]);
}
for (int i = 0; i < length; i++) {
System.out.println("Index " + i + " contains " + intArray[i]);
}
2. Deleting From the Start of an Array
Next comes the costliest of all deletion operations for an Array—deleting the first element. If we want to delete the first element of the Array, that will create a vacant spot at the 0th index.
// Starting at index 1, we shift each element one position
// to the left.
for (int i = 1; i < length; i++) {
// Shift each element one position to the left
int_array[i - 1] = int_array[i];
}
// Note that it's important to reduce the length of the array by 1.
// Otherwise, we'll lose consistency of the size. This length
// variable is the only thing controlling where new elements might
// get added.
length--;
3. Deleting From Anywhere in the Array
// Say we want to delete the element at index 1
for (int i = 2; i < length; i++) {
// Shift each element one position to the left
int_array[i - 1] = int_array[i];
}
// Again, the length needs to be consistent with the current
// state of the array.
length--;
Remove Element
처음에 문제 이해하는데 생각보다 시간이 오래 걸림ㅜㅜㅜ
나는 투포인터롤 앞쪽과 뒤쪽으로 자꾸 하려고 했는데
생각해보니 앞쪽에서 하는 게 훨씬 편하네...
class Solution {
public int removeElement(int[] nums, int val) {
int k = 0;
for(int i = 0; i < nums.length; i++) {
if(nums[i] == val) continue;
nums[k] = nums[i];
k++;
}
return k;
}
}
Remove Duplicates from Sorted Array
첫 번째 걸 풀고 나면 두 번째 문제는 비슷하다. (32.04%)
class Solution {
public int removeDuplicates(int[] nums) {
//중복삭제
if(nums.length ==0) {
return 0;
}
int before = nums[0];
int k = 1;
for(int i = 1; i<nums.length;i++){
if(nums[i]<=before) continue;
nums[k] = nums[i];
before = nums[i];
k++;
}
return k;
}
}
아래는 100%인데 나와 다른 점은 먼저, 1을 할당해주고 앞쪽 숫자와 비교했다는 것이다.
나는 nums.length가 0일때 어떻게 하나 고민을 했는데 생각해보니 1 할당하면 nums.length보다 커서 아예 for문으로 들어가질 않네...ㅜㅜ
class Solution {
public int removeDuplicates(int[] nums) {
int k = 1;
for(int i = 1; i < nums.length; i++) {
if(nums[i] == nums[i-1]) continue;
nums[k] = nums[i];
k++;
}
return k;
}
}
'꼬꼬마 개발자 노트 > Coding Problems' 카테고리의 다른 글
Arrays - chapter5 (0) | 2022.01.13 |
---|---|
Arrays -chapter 4 (0) | 2022.01.12 |
Arrays- Chapter2 (0) | 2022.01.10 |
Arrays -chapter1 (0) | 2022.01.10 |
프로그래머스-[1차] 추석 트래픽 (0) | 2022.01.06 |