Lettcode_260_Single Number III
Given an array of numbers
nums
, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once. For example:
Given
nums = [1, 2, 1, 3, 2, 5]
, return [3, 5]
. 생각:
(1)주 제 는 하나의 정수 배열 을 정 하 는 것 입 니 다.그 중에서 두 개의 요소 가 한 번 만 나타 나 고 나머지 모든 요소 가 두 번 나타 나 는 것 을 의미 합 니 다.이 두 개의 요소 가 한 번 만 나타 나 는 요 소 를 찾 아 보 세 요.
(2)두 가지 요소 가 한 번 나 타 났 기 때문에^의 방법 으로 해결 할 수 없다.이 는 하나의 맵 을 통 해 이 루어 져 야 합 니 다.그 중에서 key 는 배열 의 요소 이 고 value 는 이 요소 가 배열 에서 나타 나 는 횟수 입 니 다.우선,배열 을 옮 겨 다 니 며 현재 요소 가 map 에 없 으 면 현재 요 소 를 map 에 저장 하고 value 를 1 로 설정 합 니 다.맵 에 존재 하면 대응 하 는 value 값 을 1 로 추가 합 니 다.여기에 옮 겨 다 니 는 요소 가 배열 에서 2 이상 의 요소 수 를 저장 하 는 변 수 를 설정 합 니 다.그 다음 에 배열 을 만 듭 니 다.배열 의 크기 는 원래 배열 의 길이 에서 저 장 된 변수 수 치 를 뺀 다음 에 map 를 옮 겨 다 니 며 map 에서 value 값 이 1 인 요 소 를 만 든 배열 에 순서대로 저장 합 니 다.즉,원 하 는 것 입 니 다.
(3)자세 한 내용 은 아래 코드 를 보십시오.본문 이 너 에 게 도움 이 되 기 를 바란다.
알고리즘 코드 는 다음 과 같 습 니 다.
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
public class Single_Number_III {
public static void main(String[] args) {
singleNumber(new int[] { 0, 0, 1, 2 });
}
public static int[] singleNumber(int[] nums) {
if (nums == null || nums.length == 0)
return nums;
int len = nums.length;
int p = 0;
Map<Integer, Integer> maps = new LinkedHashMap<Integer, Integer>();
for (int i = 0; i < len; i++) {
if (maps.get(nums[i]) == null) {
maps.put(nums[i], 1);
} else {
maps.put(nums[i], maps.get(nums[i]) + 1);
p = p + maps.get(nums[i]);
}
}
int[] arr = new int[len - p];
int t = 0;
Set<Integer> keySet = maps.keySet();
for (Integer integer : keySet) {
if (maps.get(integer) == 1) {
arr[t++] = integer;
}
}
return arr;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.