力扣第49题:字母异位词分组
遍历数组,将每一个字符串变成char数组 然后排序,如果map里面有则将他的值返回来(key是排序好的字符串)
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
HashMap<String,List<String>> map = new HashMap<>();
for(String s:strs){
char[] c = s.toCharArray();
Arrays.sort(c);
String sd = new String(c);
List<String> list = map.getOrDefault(sd,new ArrayList<String>());
list.add(s);
map.put(sd,list);
}
return new ArrayList<List<String>>(map.values());
}
}
力扣第136题:只出现一次的数字
class Solution {
public int singleNumber(int[] nums) {
//任何数^0 = 任何数 ^自身则是0
//满足交换律
int single = 0;
for(int num :nums){
single = single ^ num;
}
return single;
}
}
力扣第169题:多数元素
class Solution {
public int majorityElement(int[] nums) {
int count = 0;
Integer c= null;
for(int num:nums){
if(count == 0){
c = num;
}
count +=(num ==c) ? 1:-1;
}
return c;
}
}
力扣第20题:有效的括号
class Solution {
public boolean isValid(String s) {
HashMap<Character,Character> map = new HashMap<>();
map.put('}','{');
map.put(')','(');
map.put(']','[');
Deque<Character> deque = new LinkedList<>();
for(int i = 0; i< s.length();i++){
//如果有就证明右括号
if(map.containsKey(s.charAt(i))){
//判断栈内有没有 如果没值就返回false
if(deque.peek() != map.get(s.charAt(i))||deque.isEmpty()){
return false;
}
//如果有值且满足条件则弹出
deque.pop();
}
else{
deque.push(s.charAt(i));
}
}
return deque.isEmpty();
}
}
本文相关图片资源来自于网络中,如有侵权请联系删除!