자바로도 코딩 테스트를 볼 수 있는 기량을 높이기 위해 추후에 더 정리가 필요하겠지만 C++ 과 다른 문법, 그리고 차이점을 간략하게 적은 포스트다.
Two Sum
c++
map<int,int> hashMap;
hashMap.count({x})
hashMap[x] = y;
hashMap[x]
return {x,y} #vector form
hashMap[x]++;
java
HashMap<Integer,Integer> hashMap = new HashMap<Integer,Integer>()
//초기값을 설정해두는데 쓰이지만, 안에 타입을 지정해두는거 스킵가능하다
hashMap.containsKey({x})
hashMap.put(x,y) #Key, Value
hashMap.get(x)
return new int[] (x,y) #array form
.size() => length
hashMap.put(key, hashMap.get(key)+1)
Majority Element
c++
hashMap[x]++
for(auto& it : hashMap){
cout << it.first << it.second;
}
java
hashMap.put(key, hashMap.get(key) + 1)
for(HashMap.Entry<type,type> entry : hashMap.entrySet()) {
System.out.println(entry.getKey(), entry.getValue())
}
Valid Anagram
c++
hashMap[s[i]]++;
for(char c : s){
cout << c;
}
int n = 200;
string v = to_string(n);
string v2 = "200";
int n = stoi(v2);
java
hashMap.put(s.charAt(i),hashMap.get(s.charAt(i)) +1)
for(char c : s.toCharArray()){
System.out.println(c)
}
int n = 200;
String v = Integer.toString(n);
String v2 = "200";
int n = Integer.parseInt(v2);
Character.isDigit(c);
Character.isLetter(c);
Character.isLetterOrDigit
Character.isLowerCase
Character.isUpperCase
Character.isWhitespace
Character.toLowerCase(c);
Character.toUpperCase(c);
StringBuilder answer = new StringBuilder();
answer.append();
Increasing Subsequences
c++
vector<int> container;
vector<vector<int>> answer;
set<vector<int>> s;
s.insert(container)
container.back()
container[container.size()-1]
container.pop_back();
container.push_back();
java
LinkedList<Integer> container = new LinkedList<>()
List<List<Integer>> answer = new LinkedList();
dfs(LinkedList<Integer> container>..., int[] nums){
if(container.size() > 1){
s.add(new LinkedList(container)
}
container.getLast()
container.removeLast()
container.add();
항상 오브젝트를 넣을때는 클래스를 선언 해줘야한다.
Nearest Exit from Entrance in Maze
c++
vector<pair<int,int>> dir
vector<vector<bool>> visited
Queue<vector<int>>
q.front()
q.push({x,y,0})
java
int[][] dir = {{}};
boolean[][] visited = new boolean[][]
Queue<int []> q = new LinkedList<>();
q.peek();
q.add(new int[]{x,y,0})
c++
map<int,int> hashMap;
for(int i = 0; i < nums.size(); i++){
hashMap[nums[i]]++;
}
sort(nums.begin(),nums.end(),[&hashMap](int& a, int& b){
if(hashMap[a] == hashMap[b]){
return a > b;
}
return hashMap[a] < hashMap[b];
});
return nums;
java
HashMap<Integer,Integer> hashMap = new HashMap<>();
for(int i = 0; i < nums.size(); i++){
hashMap.put(nums[i],hashMap.getOrDefault(nums[i],0)+1);
}
List<Integer> lst = new LinkedList(hashMap.keySet());
Collections.sort(lst,(a,b) -> (hashMap.get(a) == hashMap.get(b)) ? b -a : hashMap.get(a) - hashMap.get(b)});
Lambda Sort 는 일반 배열에는 못하고 Integer 배열에만 사용 가능하다.
Custom Sort String
s.toCharArray() 하면은 char[] 배열이 온다. 그러나 lambda sort 같은 경우 primitive 에는 불가능 하기 때문에 다른 리스트를 따로 만들어줘서 primitive 를 다 넣어줘야했다.