티스토리 뷰
Problem
Given an array nums of size n, return the majority element.
The majority element is the element that appears more than ⌊n / 2⌋ times. You may assume that the majority element always exists in the array.
Example 1:
Input: nums = [3,2,3]
Output: 3
Example 2:
Input: nums = [2,2,1,1,1,2,2]
Output: 2
Constraints:
- n == nums.length
- 1 <= n <= 5 * 10^4
- -2^31 <= nums[i] <= 2^31 - 1
Follow-up: Could you solve the problem in linear time and in O(1) space?
Solution
n개의 원소를 가진 정수 배열이 주어질 때, 과반수 이상 등장하는 원소를 반환하는 문제입니다.
과반수 이상 등장하는 원소는 반드시 한 개 존재하고, 선형 시간 내에 추가 공간 O(1)만 사용하여 풀어볼 것을 권장하고 있습니다.
과반수 이상 등장한다는 의미는 다른 원소의 개수를 모두 합한 것보다 많다는 뜻이므로 아래 처럼 간단히 풀이할 수 있습니다.
public class Solution {
public int majorityElement(int[] nums) {
int result = 0, count = 0;
for (int num : nums) {
if (count == 0) { // (1)
result = num;
count = 1;
} else if (result == num) { // (2)
count++;
} else { // (3)
count--;
}
}
return result;
}
}
- 기준이 되는 숫자를 바꿔줍니다.
- 같은 수가 등장하면 count를 증가시킵니다.
- 다른 수가 등장하면 count를 감소시킵니다.
Test
package io.lcalmsky.leetcode.majority_element;
import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
class SolutionTest {
@Test
void givenArray_whenFindMajorElement_thenCorrect() {
assertAll(
() -> test(new int[]{3, 2, 3}, 3),
() -> test(new int[]{2, 2, 1, 1, 1, 2, 2}, 2)
);
}
private void test(int[] given, int expected) {
// when
Solution solution = new Solution();
int actual = solution.majorityElement(given);
// then
assertEquals(expected, actual);
}
}
'Algorithm > LeetCode' 카테고리의 다른 글
662. Maximum Width of Binary Tree (0) | 2022.03.03 |
---|---|
148. Sort List (0) | 2022.03.02 |
1288. Remove Covered Intervals (0) | 2022.02.27 |
1675. Minimize Deviation in Array (0) | 2022.02.26 |
136. Single Number (0) | 2022.02.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스프링부트
- Spring Boot
- JPA
- Spring Boot JPA
- Linux
- proto3
- intellij
- 스프링 부트
- 헥사고날 아키텍처
- 알고리즘
- spring boot app
- 클린 아키텍처
- r
- 스프링 부트 애플리케이션
- spring boot application
- Spring Data JPA
- gRPC
- QueryDSL
- @ManyToOne
- spring boot jwt
- leetcode
- Spring Boot Tutorial
- Jackson
- 스프링 부트 튜토리얼
- 함께 자라기
- 함께 자라기 후기
- Java
- 스프링 데이터 jpa
- 스프링 부트 회원 가입
- JSON
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함