24 两两交换链表中的节点
自己写的有点蠢。。。。看题解去了😀
public ListNode swapPairs(ListNode head) {
List<ListNode> list=new ArrayList<ListNode>();
ListNode t=head;
if(head==null||head.next==null)return head;
while(t!=null){
list.add(t);
t=t.next;
}
t=head.next;
for (int i = 0,l;i<list.size(); i+=2) {
l=list.size()-i;
if(l>=4){
list.get(i).next=list.get(i+3);
list.get(i+1).next=list.get(i);
}
else if(l==3){
list.get(i).next=list.get(i+2);
list.get(i+1).next=list.get(i);
}
else if(l==2){
list.get(i).next=null;
list.get(i+1).next=list.get(i);
}
else break;
}
return t;
}
心态崩了 人家递归写的好短啊😭
public ListNode swapPairs(ListNode head) {
if(head == null || head.next == null){
return head;
}
ListNode next = head.next;
head.next = swapPairs(next.next);
next.next = head;
return next;
}
242 有效的字母异位词
public boolean isAnagram(String s, String t) {
char[] ss = s.toCharArray();
char[] tt = t.toCharArray();
Arrays.sort(ss);
Arrays.sort(tt);
return Arrays.equals(ss,tt)?true:false;
}
1002 查找共用字符
…一言难尽🥺 还要加强一下集合的学习
public List<String> commonChars(String[] words) {
ArrayList<String> list = new ArrayList<>();
HashMap<Character, Integer> hashMap = new HashMap<>();
for (int i = 0; i < 26; i++) {
hashMap.put((char)('a'+i),Integer.MAX_VALUE);
}
for (String x :words) {
Iterator<Map.Entry<Character, Integer>> iterator = hashMap.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry<Character, Integer> next = iterator.next();
Character key = next.getKey();
if(x.contains(key.toString())) {
int sum=0;
for (char ch2:x.toCharArray()) {
if(ch2==key)sum++;
}
hashMap.put(key,Math.min(sum,hashMap.get(key)));
}
else {
iterator.remove();
}
}
}
Set<Character> characters = hashMap.keySet();
for (Character a:characters
) {
for (int i = 0; i < hashMap.get(a); i++) {
list.add(a.toString());
}
}
return list;
}